解题思路:
如果要把n个环从i移动到j分为三个部分:
第一部分:
将前n-1个环移动到另一个柱子上,由于只有三根柱子且分别为1、2、3
=>i + j + 另一根柱子 = 6
=>另一根柱子 = 6 - i - j
=>前往下一个问题,把n-1个环从i移动到6 - i - j上
第二部分:
将第n个环移动从i移动到j上
第三部分:
将前n-1个环从另一个柱子上移回到第j跟柱子上
=>前往下一个问题,把n-1个环从6 - i - j移动到j上
注意事项:
注意移动到第1跟柱子后,就不需要移动前一个柱子了,因为没有了
参考代码:
def hanoi(n, i, j):
if n != 1:
hanoi(n - 1, i, 6 - i - j)
print("Move %d from %d to %d" % (n, i, j))
if n != 1:
hanoi(n - 1, 6 - i - j, j)
num = int(input())
hanoi(num, 1, 3)
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复