动手。预测。理解。

汉诺塔

用3–5个圆盘尝试游戏,获取当前局面的提示,通过两段短动画理解递归策略。需要时可以直接查看逐步解法。

玩汉诺塔
ABC圆盘44圆盘33圆盘22圆盘11

先移开小圆盘堆,才能移动最大的圆盘。

汉诺塔规则

  1. 把所有圆盘从柱A移到柱C。
  2. 每次只能移动一个圆盘,而且必须取柱顶的圆盘。
  3. 不能把大圆盘放在小圆盘上。

玩汉诺塔

先选起点柱,再选目标柱。数字代表大小:1最小。可以撤销一步或重新开始,尝试另一种思路。

0步
ABC圆盘33圆盘22圆盘11

选择起点柱,再选择目标柱。

提示根据当前局面给出,不会替你移动圆盘。符合规则的绕路仍然可以解开。

汉诺塔怎么解

先考虑最大的圆盘。在四盘例子中,三个小盘挡住了它。移动圆盘4之前,先解决这个更小的问题。

  1. 移开小盘堆

    用C作辅助柱,把圆盘1、2、3从A移到B。圆盘4留在A。这样C为空,圆盘4也露出来了。

    ABC圆盘44圆盘33圆盘22圆盘11
  2. 移动最大圆盘

    把圆盘4从A移到C。这一步让最大的圆盘到达最终位置。

    ABC圆盘44圆盘33圆盘22圆盘11
  3. 把小盘堆移到终点

    用A作辅助柱,把圆盘1、2、3从B移到C。它们可以叠在圆盘4上,游戏完成。

    ABC圆盘44圆盘33圆盘22圆盘11

每个小盘堆都使用相同的三段计划:移开最大盘上面的盘,移动最大盘,再把小盘堆放回它上面。只剩一盘时直接移动。这就是递归;每个子问题的起点、终点和辅助柱都会改变。

预测下一个目标来学习

这些独立的四盘例子不会改变你的游戏局面。可以暂停、逐步查看、回答预测题或直接展开解释。

1. 为最大圆盘让路

观察三个小盘如何为圆盘4让路。预测移动最大盘之前,它们必须在哪一柱。

独立的四盘例子

目标:以C为辅助柱,把3盘从A移到B。

ABC圆盘44圆盘33圆盘22圆盘11

先让出通道:把顶部三盘从A移到B。

第0步,共8步

2. 重复较小的问题

圆盘4已经在C。剩下的是同一个三盘问题,只是柱子的角色改变了。

独立的四盘例子

目标:以A为辅助柱,把3盘从B移到C。

ABC圆盘44圆盘33圆盘22圆盘11

圆盘4留在C。现在解决从B到C的三盘问题。

用A作辅助,把三盘从B移到C,圆盘1第一步应该去哪里?

第0步,共7步

逐步解法

例子都从所有圆盘在A开始,最终到达C。直接展开任何例子,你正在玩的局面不会改变。

最少移动次数

T(n) = 2T(n − 1) + 1 = 2ⁿ − 1

标准解法移动小盘堆两次、最大盘一次,所以T(n) = 2T(n − 1) + 1。一盘需要一步,因此n盘的最少次数为2ⁿ − 1。

3盘:7步。4盘:15步。5盘:31步。

3盘 — 7步

初始局面:所有圆盘在A;目标:C。圆盘1最小。

  1. 把圆盘1从A移到C。
  2. 把圆盘2从A移到B。
  3. 把圆盘1从C移到B。
  4. 把圆盘3从A移到C。
  5. 把圆盘1从B移到A。
  6. 把圆盘2从B移到C。
  7. 把圆盘1从A移到C。
4盘 — 15步

初始局面:所有圆盘在A;目标:C。圆盘1最小。

  1. 把圆盘1从A移到B。
  2. 把圆盘2从A移到C。
  3. 把圆盘1从B移到C。
  4. 把圆盘3从A移到B。
  5. 把圆盘1从C移到A。
  6. 把圆盘2从C移到B。
  7. 把圆盘1从A移到B。
  8. 把圆盘4从A移到C。
  9. 把圆盘1从B移到C。
  10. 把圆盘2从B移到A。
  11. 把圆盘1从C移到A。
  12. 把圆盘3从B移到C。
  13. 把圆盘1从A移到B。
  14. 把圆盘2从A移到C。
  15. 把圆盘1从B移到C。
5盘 — 31步

初始局面:所有圆盘在A;目标:C。圆盘1最小。

  1. 把圆盘1从A移到C。
  2. 把圆盘2从A移到B。
  3. 把圆盘1从C移到B。
  4. 把圆盘3从A移到C。
  5. 把圆盘1从B移到A。
  6. 把圆盘2从B移到C。
  7. 把圆盘1从A移到C。
  8. 把圆盘4从A移到B。
  9. 把圆盘1从C移到B。
  10. 把圆盘2从C移到A。
  11. 把圆盘1从B移到A。
  12. 把圆盘3从C移到B。
  13. 把圆盘1从A移到C。
  14. 把圆盘2从A移到B。
  15. 把圆盘1从C移到B。
  16. 把圆盘5从A移到C。
  17. 把圆盘1从B移到A。
  18. 把圆盘2从B移到C。
  19. 把圆盘1从A移到C。
  20. 把圆盘3从B移到A。
  21. 把圆盘1从C移到B。
  22. 把圆盘2从C移到A。
  23. 把圆盘1从B移到A。
  24. 把圆盘4从B移到C。
  25. 把圆盘1从A移到C。
  26. 把圆盘2从A移到B。
  27. 把圆盘1从C移到B。
  28. 把圆盘3从A移到C。
  29. 把圆盘1从B移到A。
  30. 把圆盘2从B移到C。
  31. 把圆盘1从A移到C。

我的局面和例子不同怎么办?

任何遵守大小规则的局面都能到达C。回到旧局面是循环,不是无解。上面的公式只适用于标准起点,并不表示任意局面的剩余步数。使用提示来找当前局面的下一步。

益智游戏 →