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

    汉诺塔问题。有三根柱子A、B、C。设A柱上有n个盘子,盘子的大小不等,大的盘子在下,小的盘子在上,如下图所示。要求将A柱上的n个盘子移到C上,每一次只能移一个盘子。在移动过程中,可以借助于任一根柱子,但必须保证三根柱子上的盘子都是大的盘子在下,小的盘子在上。要求编一个程序打印出移动盘子的步骤。

    #include<iostream>
    using namespace std;
    
    void move(char x,char y){
        cout<<x<<"->"<<y<<endl;
    }
    void hanoi(int n,char A,char B,char C){
        if(n == 1) move(A,C);
        else{
            hanoi(n-1,A,C,B);//以C为平台,把A上面n-1个搬到B 
            move(A,C);//再把A最上一个(从底下数第n(指函数里的n)个)放以在C柱上 
            hanoi(n-1,B,A,C);// 以A为平台,把B上那n-1个搬到C 
        } 
    /*不要想太复杂,这里的ABC在传来传去中,指代确实有改变,
    但从第n个盘的移动考虑就可,把上面n-1做整体
    */ } int main(){ int num; cout<<"请输入A柱盘数:"; cin>>num; hanoi(num,'A','B','C') ; return 0; }
  • 相关阅读:
    Storm
    Linux 网络配置
    .NET Remoting
    jwt
    new操作符
    元数据
    C# lock
    三十而立
    面试
    灯火
  • 原文地址:https://www.cnblogs.com/OKDA/p/12496511.html
Copyright © 2011-2022 走看看