【问题描述】
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。
游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
有三个圆柱 A、B、C,初始时 A 上有 N 个圆盘,N 由用户输入给出,最终移动到圆柱 C 上。
每次移动步骤的表达方式示例如下:[STEP 10] A->C。其中,STEP 是步骤序号,宽度为 4 个字符,右对齐。
请编写代码,获得输入 N 后,输出汉诺塔移动的步骤。
【输入形式】
【输出形式】
【样例输入】
输入:"3"
【样例输出】
输出:"
[STEP 1] A->C
[STEP 2] A->B
[STEP 3] C->B
[STEP 4] A->C
[STEP 5] B->A
[STEP 6] B->C
[STEP 7] A->C
"
count=0
def han(n,src,dst,mid):
global count
if n==1:
count+=1
print('[STEP{:>4}] {}->{}'.format(count,src,dst))
else:
han(n-1,src,mid,dst)
count+=1
print('[STEP{:>}] {}->{}'.format(count,src,dst))
han(n-1,mid,dst,src)
a=int(input())
han(a,"A","C","B")