同样,借此来强化学习,但是说实话我写这个感觉很玄。Hanoi塔是昨天刚学到的东西,想了很久,感觉还是没有悟透,可能学到更多新东西,或产生了新的想法,或突然悟到了什么,届时会再做修改。
看了很多关于Hanoi塔的博客,说实话都是一头雾水,可能也是因为鄙人的理解能力有欠缺。一直看到一位博主的一篇讲解才略有启发,博客↓↓↓
传送门
(后续)
发现一位B站UP主的讲解更加细致,留下链接:↓↓↓
传送门
OK,言归正传。
Hanoi塔起源是什么?我们不多说,有兴趣的可以查一下。
Hanoi塔的规则是什么?
有三根柱子,将A柱子上所有的圆盘转移到C柱子。
1.在小圆盘上不能放大圆盘。
2.在三根柱子之间一回只能移动一个圆盘。
3.只能移动在最顶端的圆盘。
具体操作?
我们从最简单的开始:
一个盘:A→C;
两个盘:A→B,A→C,B→C;
三个盘:A->C , A->B , C->B , A->C , B->A , B->C , A->C
一个盘的时候,直接由A柱到C柱
两个盘的时候,把不是最大的一个放到B柱,然后把最大的从A放到C柱,再把B柱上的小盘放到C柱
三个盘的时候,步骤相同其实,就是把不是最大的放到B柱然后把最大的放到C柱,再借助A柱重复做一次两个盘的情况的步骤(其实就是重复两次)。
我们要解决n层Hanoi塔就要解决n-1层Hanoi塔,
我们要解决n-1层Hanoi塔就要解决n-2层Hanoi塔,
……
……
我们要解决3层Hanoi塔就要解决2层Hanoi塔,
我们要解决2层Hanoi塔就要解决1层Hanoi塔,
(分治思想)
总结一下:
只需要两步来解决这个问题:
第一步:
把n-1个小盘,从A柱移动到B柱,
把第n个小盘,由A柱移动到C柱。
第二步:
把n-1个小盘,从B柱移动到C柱。←其实这一步就是换位置后重复第一步。
接下来做题有疑问 可以返回这里查看。
在这里我先放上一道题以及完整的代码:
Description:
如图所示的三根针,其中A针上穿好了由大到小的64片金片,不论白天黑夜,总有一个和尚在按照下面的法则移动金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。和尚们预言,当所有的金片都从A针移到C针上时,世界就将在一声霹雳中消失,这就是所谓的汉诺塔。请编程求出将A针上所有金片移到C上的步骤。

Input
标准输入,一个整数N,表示有N个金片。
Output
标准输出,输出所有步骤,每一步骤占一行。
Input Copy
3
Output
A->C
A->B
C

最低0.47元/天 解锁文章
1315





