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

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang

    以下进行汉诺塔问题的递归实现

    #include <iostream.h>

    int gbsx( char & L, char & R  )    //改变顺序的函数

    {  char T ;

           T= L ;

           L= R ;

           R= T ;

           return0 ;

    }

     

    void move( int n , char a , char b , char c)      //汉诺塔核心函数

    {  

           if( n == 1 )

           {  

                  cout<< "移动"<< a  << "" << c << endl ;

           }

           else

           {   gbsx( b , c );                    //改变后面两个的顺序

         move( n - 1 , a , b , c );                //用递归实现其步骤

          

               gbsx( b , c );                    //把后面那两个的顺序换回来

           move( 1 , a , b , c);

          

           gbsx(a , b );                       //改变前面两个的顺序

           move(n - 1 , a , b , c );               //用递归实现其步骤

           }

          

    }

     

    int sum( int n )                         //用来计算步骤数的函数

    {

           ints = 1 ;

           for(int i = 1 ; i <= n ; i++ )

       {   

                  s= s*2 ;

           }

           returns-1 ;

    }

     

    void main()                            //主函数

    {  int n = 1 ;

           cout<< "请输入您所放的盘子数目"<< endl ;          

           cin>> n ;                                //通过输入的值赋给n来实现

           cout<<  "共有" << sum ( n ) <<","<< "步骤为"<< endl ;

       move( n , 'A' , 'B' , 'C' );                    //调用函数

    }

     

  • 相关阅读:
    关于方差所引发的遐想
    POJ 1390 Blocks
    POJ 1722 SUBTRACT
    BZOJ 1901 Dynamic Rankings
    关于Shine-hale
    ACM恢复训练(一)最短路
    CSP退役记
    校内模拟赛(三)(9.24)
    校内模拟赛(二)(9.12)
    校内模拟赛(一)(2019.9.10)
  • 原文地址:https://www.cnblogs.com/xiaoyajiang/p/5950384.html
Copyright © 2011-2022 走看看