zoukankan      html  css  js  c++  java
  • 汉诺塔递归实现

         问题实现:当n==1时候只需将盘从A移到C即可,那摩当规模为n时候,可以转化为规模为n-1的情况

          1,借助C,将n-1个圆盘从A移到B

          2,将第n个盘从A移动到C

          3,借助A,将n-1个盘从B移动到C

    /*下面代码的时间复杂度为O(2^n)*/

    //hannoi.cpp
    //--------------------------------------------------
    #include<iostream>
    using namespace std;
    void MOVE(int n, char x,char y);
    void hannoi(int n, char A, char B, char C);
    int main(){
    int n;
    while (cin >> n){
    hannoi(n,'A','B','C');
    }
    }
    void MOVE(int n, char x,char y){
    /*将第n个铜盘从x移到y*/
    cout << "将" << n << "从" << x << "移到" << y << endl;
    }
    void hannoi(int n, char A, char B, char C){
    /*表示将第n个铜盘借助B由A移动到C*/
    if (n == 1){
    /*此处为递归的结束条件*/
    MOVE(1, A, C);
    }
    else{
    hannoi(n - 1, A, C, B); /*将n-1个圆盘借助C从A移动到C*/
    MOVE(n, A, C);/*将第n个圆盘从A移动到C*/
    hannoi(n - 1, B, A, C);
    }
    }

  • 相关阅读:
    HTML5 JSDOM
    svn 基本操作
    Flex布局
    git上传布置代码 git优势
    jsonp, json区别
    require.js 模块化简单理解
    @vue/cli 3 安装搭建及 webpack 配置
    npm 常用命令 使用命令删除 node_modules 包
    package.json字段分析
    rem适配方案
  • 原文地址:https://www.cnblogs.com/td15980891505/p/4439404.html
Copyright © 2011-2022 走看看