一、汉诺塔题目描述
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
1.1 思路
思路简化,因为我们要把所有的饼从A移到C上(Move all from A to C)
- 把A针中的N-1个饼放到针B上,此时help是C针(从A中来,到B中去,借助C)
- 把A针的最后一个(名字叫做N)饼放到目标针C上
- 把B针的N-1个饼放到C针上,此时help是A针(从B中来,到C中去,借助A)
1.2 复杂度分析
T(n) = T(n - 1)+ 1 + T(n - 1)= 2 T(n - 1) + 1,构造等比数列
要打印2n - 1次,于是复杂度是O(2n)
1.3 测试代码及结果