解题思路:
如果要把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++代码)浏览:866 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:584 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:512 |
【蟠桃记】 (C语言代码)浏览:651 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:539 |
C语言训练-求PI* (C语言代码)浏览:614 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:619 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:937 |
分糖果 (C语言代码)浏览:920 |
判定字符位置 (C语言代码)浏览:799 |