一、问题
Tower of Hanoi,是一个源于印度的古老传说:大梵天创建世界时做了三根金刚石柱,在一根柱子从上往下按大小顺序摞着64片黄金圆盘,大梵天命令婆罗门把圆盘重新摆放在另一根柱子上,并且规定:
- 一次只能移动一个圆盘
- 小圆盘上不能放大圆盘
请使用程序代码模拟圆盘的移动过程,并估算出时间复杂度。
二、思路
- 假设每根柱子标号a\b\c,每个圆盘用1,2,3...表示其大小,圆盘初始在a,要移动到的目标是c。
- 如果只有一个圆盘,此时是最小问题,可以直接求解
- 移动圆盘1 a-->c:
- 如果有两个圆盘:
- 圆盘1 a-->b
- 圆盘2 a-->c
- 圆盘1 b-->c
- 如果有三个圆盘
- 圆盘 12 a-->b
- 圆盘 3 a-->c
- 圆盘 12 b-->c
- 如果有四个圆盘
- 圆盘 123 a-->b
- 圆盘 4 a-->c
- 圆盘 123 b-->c