#387. hanoi(汉诺塔)
hanoi(汉诺塔)
题目描述
汉诺塔由三根柱子(分别用A、B、C表示)和n个大小互不相同的空心盘子组成。
一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体。
对汉诺塔的一次合法的操作是指:从一根柱子的最上层拿一个盘子放到另一根柱子的最上层,同时要保证被移动的盘子一定放在比它更大的盘子上面(如果移动到空柱子上就不需要满足这个要求)。我们可以用两个字母j加一个箭头来描述一次操作:第一个字母代表起始柱子,第二个字母代表目标柱子。例如,A->B就是把柱子A最上面的那个盘子移到柱子B。汉诺塔的游戏目标是将所有的盘子从第一根柱子移动到第三根柱子上面。
输入格式
一行 ,4个变量,分别表示 汉诺塔层数 n,第一根柱子A,第二根柱子B,第三根柱子C,其中n不大于10,A,B,C是不重复的大写字母
输出格式
若干行,每一行表示移动一次的步骤,直到将所有的盘子从第一根柱子移动到第三根柱子上面。
样例
输入样例1
3 A B C
输出样例1
A->C
A->B
C->B
A->C
B->A
B->C
A->C
输入样例2
2 Q W E
输出样例2
Q->W
Q->E
W->E
相关
在以下作业中: