#65. 汉诺塔问题 3
汉诺塔问题 3
【题目描述】
设有 n 个大小两两不等的中空圆盘,按圆盘直径从小到大的顺序依次编号为 1 到 n,将这 n 个圆盘叠套在三个立柱上,立柱的编号为 A、B、C,这个状态为起始状态。
现在要求找到一种步数最少的移动方案,使得从起始状态变为目标状态。
移动时要求:
(1)盘子只能置放于立柱上,不能置放于其他地方;
(2)一次只能移动一个盘子;
(3)任何时刻都不允许大盘子叠放在小盘子上面。
【输入格式】
第一行为盘子总数n。
第二行到第四行分别是起始状态中 A、B、C 柱上盘子的个数和从上到下的盘子编号。
第五行到第七行分别是目标状态中 A、B、C 柱上盘子的个数和从上到下的盘子编号。
输入数据保证从上到下的盘子编号为从小到大排列。
【输出格式】
输出步数最少的移动方案,每一步占1行,格式为(具体参考样例):move 圆盘编号 from 立柱编号 to 立柱编号
最后一行输出最少步数
【样例输入】
5
3 1 2 3
2 4 5
0
1 2
3 3 4 5
1 1
【样例输出】
move 1 from A to B
move 2 from A to C
move 1 from B to C
move 3 from A to B
move 1 from C to B
move 2 from C to A
move 1 from B to C
7
【数据范围】
100% 的数据:1 ≤ n ≤ 20