汉诺塔问题
一、问题描述
汉诺塔问题:
有三个塔座A,B,C,开始时,塔座A上一共有n个盘子,这些盘子自上而下,由小到大叠在一起,
上面的盘子总是比下面的小。对盘子从小到大进行编号:1,2,3,。。。,n。现在要求将盘子移到
塔座B上,仍然按同样的次序摆放。在移动盘子时,遵顼以下原则:
1,每次只能移动一共盘子
2,任何时候都不能将大盘子压到小盘子
3,可以将盘子移到A,B,C,的任一盘子
注:本例中使用列表A,B,C代表塔座
二、代码实现
代码如下:
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 13 14:10:35 2021
@author: lenovo
汉诺塔问题:
有三个塔座A,B,C,开始时,塔座A上一共有n个盘子,这些盘子自上而下,由小到大叠在一起,
上面的盘子总是比下面的小。对盘子从小到大进行编号:1,2,3,。。。,n。现在要求将盘子移到
塔座B上,仍然按同样的次序摆放。在移动盘子时,遵顼以下原则:
1,每次只能移动一共盘子
2,任何时候都不能将大盘子压到小盘子
3,可以将盘子移到A,B,C,的任一盘子
注:本例中使用列表A,B,C代表塔座
"""
def Hanoi(n,A,B,C):
if n >= 1:
C[n-1] = A[n-1]
Hanoi(n-1, A, B, C)
B[n] = A[n]
Hanoi(n-1, A, B, C)
B[n-1] = C[n-1]
else:
return "参数不符合规范"
return B
A = [1,2,3,4]
B = [0,0,0,0]
C = [0,0,0,0]
print(Hanoi(3, A, B, C))
2.打印结果

下一篇
分治法之快速排序
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/133834.html