汉诺塔问题

image.png

思路是:

当a只有一个元素时,直接把a 移动到c。

当a有2个元素时 ,先把第一个移动到b,再把第二个移动到c再把第一个从b移动到c。

当a有64个元素时,底64个等第63个移动到b,自己最后再移动到c(这一步就是当a元素只有一块时的情况)

第63个等第62个先移动到b,自己最后移动到c,然后再把b上的所有移动到c

第63个等第62个……

到了第二个就特殊了,第二个不再是等第一个从a移动到b,当发现a是1时,可以直接从a移动到c,所以第二个等第一个移动之后,自己再移动到b,再把c移动到b,这个时候 第三个就等待完毕了,第三个从a移动到c……

b永远是临时杆

#include <iostream>

#include <stack>

using namespace std;

void hanNoi(int n, char a, char b, char c) {

       if (n == 1) {

              cout << n << " form " << a << " to " << c << endl;

       }

       else {

              hanNoi(n - 1, a, c, b);

              cout << n << " from " << a << " to " << c << endl;

              hanNoi(n - 1, b, a, c);

       }

}

int main() {

       hanNoi(10, 'a', 'b', 'c');

       system("pause");

       return 0;

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 汉诺塔(港台:河内塔)是根据一个传说形成的数学问题:有三根杆子A,B,C。A杆上有 N 个 (N>1) 穿孔圆盘,...
    TAsama阅读 2,962评论 0 0
  • 数据结构习题解析・邓俊峰 课后习题 问题有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次...
    MambaHJ阅读 1,781评论 0 1
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 12,950评论 0 13
  • 有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至B杆:...
    szu_bee阅读 3,805评论 0 0
  • 自从把课题更名为《复习课运用小组合作提高学习效率的研究》后,我开始探索怎样有效地利用小组进行复习,想探索出上好复习...
    佳玉儿阅读 1,345评论 0 1