zoukankan      html  css  js  c++  java
  • 输出汉诺塔的实现方式?

    汉诺塔实现将所有盘从A移动到C位置

    分析:

    (1)将A上n-1个盘子移动到B针(借助C针)

    (2)将A针剩下的剩下的一个盘子移动到C针

    (3)将n-1个盘子从B移动到C针上(借助A针)

    事实上,上面3步操作包含下面两种操作。

    (1)将多个盘子从一个针移动到另一个针上,这是一个递归的过程

    (2)将1个盘子从一个针上移动到另一个针上

    于是,实现方式可见下面源码(c++)

    #include<iostream>
    using namespace std;
    void print_path(char src,char dest)
    {
        cout<<src<<"-->"<<dest<<endl;
    }
    void hanoi(int n,char src,char medium,char dest)
    {
        if(n==1)
            print_path(src,dest);
        else{
            hanoi(n-1,src,dest,medium);
            print_path(src,dest);
            hanoi(n-1,medium,src,dest);
        }
    }
    int main(){
        int m;
        cout<<"the number of diskes:";
        cin>>m;
        cout<<"the moving step "<<m<<" diskes:"<<endl;
        hanoi(m,'A','B','C');
        return 0;
    }
    

    运行结果如下图所示:

      来源:C++语言程序设计(第四版)

  • 相关阅读:
    ajaxfileupload.js类实现异步文件上传
    设计模式代理
    状态码的分析
    图片的格式的分析、 图片优化
    BFC
    css3 的新属性
    二列布局、三列布局总结
    position的定义
    new Vue 发生了什么
    数据驱动
  • 原文地址:https://www.cnblogs.com/nanzh/p/7977875.html
Copyright © 2011-2022 走看看