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

      有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要求把所有盘子一个一个移动到柱子C上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。

    定义函数

      void fun(盘数, 始发位置, 中间位置, 到达位置);

      void fun(int n,char a,char b,char c);

    如果n=1,则直接从A移到C就可以了。

    如果n>1,此时需要三个步骤:

      1) 把 A 的n-1个盘子从A 经C 移到B;

      2) 把 A 剩下的1个盘子移到 C;

      3) 把 B 的n-1个盘子从B 经A 移到C;

     1 #include <iostream>
     2 using namespace std;
     3 
     4 void fun(int n,char a,char b,char c);
     5 
     6 void main(int argc, char* argv[])
     7 {
     8     fun(5,'A','B','C');
     9 }
    10 
    11 void fun(int n,char a, char b,char c)
    12 {
    13     if(n==1)
    14         cout << a << "->" << c << '	';
    15     else
    16     {
    17         fun(n-1,a,c,b);
    18         fun(1,a,b,c);
    19         fun(n-1,b,a,c);
    20     }
    21 }

  • 相关阅读:
    SPOJ AMR12B 720
    OUC_TeamTraining_#1 720
    Mac下安装必须软件
    spawn命令和expect
    python基础
    AndroidManifest.xml详解
    Ubuntu系统连接Android真机调试
    Android Studio 快捷键
    linux 解压/压缩命令
    sadasd
  • 原文地址:https://www.cnblogs.com/xxdfly/p/4371265.html
Copyright © 2011-2022 走看看