解题思路:

   如果要把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.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论