ZBLOG

编写一个满足下列要求的程序:假设有3个分别命名为A、B和C的塔座,在塔座A上插有n个直径大小各不相同,依小到大编号为1,2,……,n的圆盘,现要求将塔座A上的n个圆盘移至塔座C上,并仍按照同样顺序叠排。在普通汉诺塔的基础上,受限的汉诺塔要求“每次移动盘子只能将盘子移动到中间的B塔座上,或者从B塔座上移走”。 以n=2为例子,即开始A塔座只有两个盘子, 普通汉诺塔步骤: 第1步 1号盘 A--->B 第2步 2号盘 A--->C 第3步 1号盘 B--->C 受限汉诺塔步骤: 第1步 1...

根据题目描述的要求,你可以在代码中添加以下部分来实现受限汉诺塔问题的解决:

m = 0 # 搬动计数

def move(n, A, B): # 搬动操作
    global m
    m = m + 1
    print('第%d步 %d号盘 %s--->%s' % (m, n, A, B))

def Hanoi(n, A, B, C):
    if n == 1:
        move(1, A, B) # 将编号为1的圆盘从A移至B
        move(1, B, C) # 将编号为1的圆盘从B移至C
    else:
        Hanoi(n-1, A, C, B) # 将A上面n-1个圆盘通过C移到B上
        move(n, A ,B) # 将编号为n的圆盘从A移到B上
        Hanoi(n-1,B,A,C) #将B上面n-1个圆盘通过A移到C上

if __name__ == '__main__':
    a = 'A'
    b = 'B'
    c = 'C'    
    n = int(input('请输入初始圆盘个数:\n'))
    Hanoi(n,a,b,c)

将以上代码复制到你的编程环境中,并输入初始圆盘个数,程序会输出相应的搬动步骤。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=10922

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?