2025 春晚刘谦魔术题解

· · 算法·理论

  1. 筷子一根
  2. 杯子(可有酒水)
  3. 勺子
  1. 放成一排。
  2. 随意调动顺序。
  3. 筷子跟左边的交换。如果在最左边则不交换。
  4. 杯子和右边的交换。如果在最右边则不交换。
  5. 勺子跟左边的交换。如果在最左边则不交换。
  6. 左手拿最左边的,右手拿最右边的东西。
  7. 放下左手的东西,剩下的一定是杯子。

感谢 @sigma_zjx 给的做法。

转换为冒泡操作,令杯子 =3,勺子 =2,筷子 =1,那么也就相当于:

显然的,12 一定会下沉,3 一定会上浮,而 3 显然至少上浮两次,所以得证。

这是我的做法。

  1. 筷子 = 1
  2. 杯子 = 2
  3. 勺子 = 3

位置也标号 1,2,3

问题抽象为给定任意一个 1,2,3 的排列,经过:

  1. 11 左边的交换(没有则不交换)。
  2. 22 右边的交换(没有则不交换)。
  3. 33 左边的交换(没有则不交换)。

最后最右边一定是 2

考虑如何解决?暴力枚举可以,但是并不优雅。

经过操作 1 之后,1 的位置可能在 1,2

经过操作 1,2 之后,2 的位置可能在 2,3

显然,如果 2 在位置 3,则操作 3 不会影响位置。

而如果 2 在位置 2,则经过操作 1 之后 2 在位置 1

那么在操作 1 之前,也就是刚开始的时候,1 必然在位置 33 在位置 2,即 2,3,1

那么,经过操作 1,2 后,序列变为 1,2,3,再经过操作 3 后变为 1,3,2

综上,证毕。

这怎么比暴力枚举还长啊.jpg,有没有更优雅的做法?