经典递归问题_汉诺塔
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
汉诺塔(又称河内塔)问题是印度的古老传说:开天辟地的神勃拉玛在庙里留下三根金刚石棒,第一根套着64个圆形金片,最大的在最下方,其余一个比一个小依次叠放。众僧需要将金片从一根棒搬到另一根棒,规定可利用中间的棒辅助,且每次只能搬一个金片、大的金片不能放在小的金片上面,完成64个金片的移动需要极庞大的步数。
该传说演变为汉诺塔游戏,规则如下:
- 有三根杆子A、B、C,初始时A杆上有若干碟子,B、C杆为空;
- 每次只能移动一块碟子,且小碟子只能叠在大碟子的上面;
- 需将A杆上所有碟子全部移动到C杆上。
汉诺塔的破解思路为经典的递归思想,具体算法思路如下:
- 如果只有一个金片,直接把该金片从源杆子移动到目标杆子,操作结束;
- 如果有n个金片,先把前n-1个金片从源杆子移动到辅助杆子,再把第n个金片从源杆子移动到目标杆子,最后把辅助杆子上的n-1个金片移动到目标杆子。
请根据上述规则,输出将A杆上的N个碟子移动到C杆的最少移动步骤。
输入格式
一行一个整数N,表示A柱上摆放的碟子数量,满足0 < N ≤ 10。
输出格式
若干行,按移动顺序输出每一步的操作,每行格式为起始柱 To 目标柱,即完成移动的最少步骤。
样例输入
3
样例输出
A To C
A To B
C To B
A To C
B To A
B To C
A To C