提交 146d7f44 编写于 作者: 幻灰龙's avatar 幻灰龙

Merge branch 'master' into 'master'

汉诺塔

See merge request csdn/contest_exercises_template!10
3
\ No newline at end of file
5
\ No newline at end of file
1
\ No newline at end of file
# 汉诺塔
定义:汉诺塔 (Tower of Hanoi)是根据一个传说形成的数学问题:
有三根杆子A,B,C。A杆上有 N 个 (N>1) 穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至 C 杆:
1. 每次只能移动一个圆盘;
2. 大盘不能叠在小盘上面。
3. 为简单起见,我们限定不超过10个盘子
问题:如何移?最少要移动多少次?
## 输入描述
输入塔的层数
## 输出描述
逐行输出每一个移动步骤。最后一行输出执行了多少步
## 输入样例
3
## 输出样例
A -> C
A -> B
C -> B
A -> C
B -> A
B -> C
A -> C
7 times
## 提示
可将圆盘临时置于 B 杆,也可将从 A 杆移出的圆盘重新移回 A 杆,但都必须遵循上述两条规则。
def hanoi(n, a, b, c):
if n == 1:
print(a, ' -> ', c)
else:
hanoi(n - 1, a, c, b)
hanoi(1, a, b, c)
hanoi(n - 1, b, a, c)
if __name__ == '__main__':
levels = int(input("dash count:"))
hanoi(levels, 'A', 'B', 'C')
print(2**levels-1, " times")
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册