zoukankan      html  css  js  c++  java
  • 汉诺塔问题

    汉诺塔问题
    时间限制:1秒 内存限制:128M
    题目描述


    设有n个大小不等的中空圆盘,按照从小到大的顺序叠套在立柱A上,另有两根立柱B和C。现在要求把全部圆盘从A柱(称为源柱)移到C柱(称为目标柱),移动过程中可借助B柱(称为中间柱)。移动时有如下的要求: 



    1) 一次只许移动一个盘。 



    2) 任何时候、任何柱子上不允许把大盘放在小盘上边 



    3) 可使用任意一根立柱暂存圆盘。 



    问:如何用最少步数实现n个盘子的移动?请打印出具体的移动方案

    输入描述


    一行一个正整数n,1<=n<=18

    输出描述


    输出若干行,第i行表示第i布的移动方案

    样例
    输入
    3
    输出
    A->C
    A->B
    C->B
    A->C
    B->A
    B->C
    A->C

    #include<iostream>
    using namespace std;
    void h(int s,char a,char b,char c)
    {
    if(s==1)
    {
    cout<<a<<"->"<<c<<endl;
    }
    else
    {
    h(s-1,a,c,b);
    cout<<a<<"->"<<c<<endl;
    h(s-1,b,a,c);
    }
    }
    int main()
    {
    int n;
    cin>>n;
    h(n,'A','B','C');
    return 0;
    }

  • 相关阅读:
    webStorm常用快捷键
    npm 常用指令
    webpack配置详解
    Tornado-StaticFileHandler参考
    python-希尔排序
    python的__init__几种方法总结
    gitlab和github一起使用
    Git的一些知识
    关于Django的理解
    python-快速排序
  • 原文地址:https://www.cnblogs.com/tcwbob/p/13088402.html
Copyright © 2011-2022 走看看