有n个大小不等的中空圆盘,按照从小到大的顺序叠套在立柱A上,另有两根空的立柱B和C。现在要求把全部圆盘从立柱A移动到立柱C上,移动过程中可以借助立柱B。移动时有如下要求:
(1)一次只允许移动一个盘。
(2)任何时候、任何柱子上不允许把大盘放在小盘上边。
(3)可使用任意一个立柱暂存圆盘。
请编写程序模拟把盘子从立柱A移动到立柱C上的步骤。
【输入】
一行,一个整数n(1≤n≤64),表示盘子的数目。
【输出】
若干行,表示把盘子从立柱A移动到立柱C上的步骤,格式见输出样例。
例如:
输入 | 结果 |
---|---|
3 |
A->C A->B C->B A->C B->A B->C A->C |
楼主究极初学者,在作业平台上看到这个题苦恼了好一会儿,.....就去7K7K小游戏上连续玩了半小时的汉诺塔小游戏, 还蛮好玩的 ( 现在连小游戏网站都需要实名了 ) 打到最后一关实在蒙不出来了,被迫开始找规律.
发现要想将 第N块圆盘 从 立柱A 移到 立柱C 上,首先要将上面的 N-1块圆盘 移到 立柱B 上.
至于N-1块圆盘的移法....嗯..重新读一遍上面的话. (把 N 换为 N-1).
然后感受到了一丝层层推进的递归感觉,..就用我半吊子的码力尝试了一下,说真的 发现规律->理清流程->代码实现->遇到问题->(摆烂)->解决问题 的感觉真的是太棒了!!
请大家一定要找机会