Hanio

用手模拟一下Hanio大致过程,代码就差不多出来了。

# 汉诺塔Hanoi_v2
# 编写一个汉诺塔的程序,要求将所有的圆盘从最右边的柱子移动到最左边的柱子。
# 汉诺塔层数 = 6

# 定义一个变量 count 用于记录移动的盘子移动的总次数
count = 0
mp = {"A":[0],"B":[0],"C":[1,2,3,4,5,6]}
def deal(src,dst):
    print(str(mp[src][0])+":"+src+"->"+dst) 
    mp[dst].insert(0,mp[src][0])
    del mp[src][0]

def hanoi(n, src, dst, mid):
    global count
    count+=1
    if n==1:
        deal(src,dst)
        return
    hanoi(n-1,src,mid,dst)
    deal(src,dst)
    hanoi(n-1,mid,dst,src)
# 6层汉诺塔,将圆盘从最后边的柱子移动到最左边的柱子


hanoi(6,'C','A','B')
# 输出移动的次数
print("总共移动了{}次。".format(count))

部分结果如图
在这里插入图片描述

发布了10 篇原创文章 · 获赞 1 · 访问量 169

猜你喜欢

转载自blog.csdn.net/weixin_43626356/article/details/105299951