zoukankan      html  css  js  c++  java
  • 双色汉诺塔 算法 (递归)

    #include<stdio.h>

    //将n个盘子A->C借助B

    void move(int n,char a,char b,char c)

    {

             if(n==1)

             {

                       printf("%c->%c\n",a,c);

                       printf("%c->%c\n",a,c);

             }

             else

             {

                       move(n-1,a,c,b);

                       printf("%c->%c\n",a,c);

                       printf("%c->%c\n",a,c);

                       move(n-1,b,a,c);

             }

    }

    //根据颜色移动

    void ColorTwoMove(int n,char a,char b,char c)

    {

             int i=n/2;                                       //分两组,因为只是颜色不同,一次移动两个。     

             for(;i>1;i--)                                    //下面主要是把两个颜色不一样,大小一样的分开放在两个柱子上。

             {

                       move(i-1,a,c,b);                 //将2*(i-1)个A->B借助C

                       move(1,a,b,c);                   //将A上剩下的两个移动到C上

                       move(i-1,b,c,a);                 //将B上的2*(i-1)个 B->A借助C

                       printf("%c->%c\n",c,b); //C上面现在是两个颜色不一样大小一样的盘子,将其中的1个C->B

                                                                              

             }                                                               

                                                                               //下面是最上面的两个的两个大小一样,颜色不一的最小的盘子

             printf("%c->%c\n",a,c);            //将第一个移动到C上

             printf("%c->%c\n",a,b);            //将第二个移动到B上

            

    }

    int main(){

             int n;

             printf("请输入盘数:");

             scanf("%d",&n);

             char a='A';

             char b='B';

             char c='C';

             ColorTwoMove(n,a,b,c);

             //      move(n,a,b,c);

             return 0;

    }

  • 相关阅读:
    Python-PyQt5-图形可视化界面(5)--打开文件或文件夹--QFileDialog
    python opencv图片拼接源码
    python numpy库矩阵运算的功能
    stm32定时器/定时器中断/PWM输出/输入捕获
    STM32 串口/中断
    STM32F4 IO
    STM32F4 时钟树概述
    MDK5新建工程/MDK5 使用技巧/STM32F4 在线调试
    使用 LocalDate 过滤掉工作日
    斐波拉契数列(Lambda表达式)
  • 原文地址:https://www.cnblogs.com/lobsterIT/p/2706268.html
Copyright © 2011-2022 走看看