python中hanoi问题

问题
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
python中hanoi问题_第1张图片问题分析
如果能把上面n-1个盘子移到B杆上的话,第n个盘子就可以直接移到c杆上。同理,如果能把上面n-2个盘子移到另一个柱子上的话就可以把第n-1个盘子直接移到c杆上。所以要移动哪一个就直接把其上的所有盘子看成整体并把其移动到另一个柱子上从而直接将所要移动的盘子直接移动到c杆。所谓的另一个柱子就是作为中介,将其以上的盘子暂时储存在那里,所以AB杆都有可能是“另一个柱子”。
运行代码

steps = 0
def hanoi(src, des, mid, n):
    global steps
    if n == 1:
        steps += 1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))
    else:
        hanoi(src,mid,des,n-1)
        steps += 1
        print("[STEP{:>4}] {}->{}".format(steps, src, des))
        hanoi(mid,des,src,n-1)

N = eval(input())
hanoi("A", "C", "B", N)

运行截图
python中hanoi问题_第2张图片python中hanoi问题_第3张图片

你可能感兴趣的:(学习Python)