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);
    }
    }

  • 相关阅读:
    css 样式表的书写顺序
    强大的动画插件。
    百叶窗特效(用move.js库)
    jq基础
    js动态控制表单表格
    js事件对象
    js事件
    js_DOM操作
    小明年龄、成绩、名次的求解问题
    如何获取亿图中的高质量图片?
  • 原文地址:https://www.cnblogs.com/td15980891505/p/4439404.html
Copyright © 2011-2022 走看看