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++语言程序设计(第四版)

  • 相关阅读:
    接口自动化架构-获取用例
    Windows性能监控工具Perfmon使用指南
    接口自动化架构1-setting
    多进程
    线程锁、守护线程
    多线程
    xlrd模块
    封装写日志的类
    封装redis
    继承
  • 原文地址:https://www.cnblogs.com/nanzh/p/7977875.html
Copyright © 2011-2022 走看看