1. 为最大圆盘让路
观察三个小盘如何为圆盘4让路。预测移动最大盘之前,它们必须在哪一柱。
独立的四盘例子
目标:以C为辅助柱,把3盘从A移到B。
先让出通道:把顶部三盘从A移到B。
第0步,共8步
先移开小圆盘堆,才能移动最大的圆盘。
先选起点柱,再选目标柱。数字代表大小:1最小。可以撤销一步或重新开始,尝试另一种思路。
选择起点柱,再选择目标柱。
提示根据当前局面给出,不会替你移动圆盘。符合规则的绕路仍然可以解开。
先考虑最大的圆盘。在四盘例子中,三个小盘挡住了它。移动圆盘4之前,先解决这个更小的问题。
用C作辅助柱,把圆盘1、2、3从A移到B。圆盘4留在A。这样C为空,圆盘4也露出来了。
把圆盘4从A移到C。这一步让最大的圆盘到达最终位置。
用A作辅助柱,把圆盘1、2、3从B移到C。它们可以叠在圆盘4上,游戏完成。
每个小盘堆都使用相同的三段计划:移开最大盘上面的盘,移动最大盘,再把小盘堆放回它上面。只剩一盘时直接移动。这就是递归;每个子问题的起点、终点和辅助柱都会改变。
这些独立的四盘例子不会改变你的游戏局面。可以暂停、逐步查看、回答预测题或直接展开解释。
观察三个小盘如何为圆盘4让路。预测移动最大盘之前,它们必须在哪一柱。
独立的四盘例子
目标:以C为辅助柱,把3盘从A移到B。
先让出通道:把顶部三盘从A移到B。
第0步,共8步
圆盘4已经在C。剩下的是同一个三盘问题,只是柱子的角色改变了。
独立的四盘例子
目标:以A为辅助柱,把3盘从B移到C。
圆盘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步。
初始局面:所有圆盘在A;目标:C。圆盘1最小。
初始局面:所有圆盘在A;目标:C。圆盘1最小。
初始局面:所有圆盘在A;目标:C。圆盘1最小。
任何遵守大小规则的局面都能到达C。回到旧局面是循环,不是无解。上面的公式只适用于标准起点,并不表示任意局面的剩余步数。使用提示来找当前局面的下一步。