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 }

  • 相关阅读:
    0x1L
    失败全是无能,成功多是侥幸。
    也谈不甘
    维护网站小笔记
    C#反射(二) 【转】
    C#反射(一) 【转】
    短期学习目标
    局域网手机遥控关机
    密码验证
    字符串反转
  • 原文地址:https://www.cnblogs.com/xxdfly/p/4371265.html
Copyright © 2011-2022 走看看