• 双色汉诺塔 算法 (递归)


    #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;

    }

  • 相关阅读:
    CSS复合选择器
    模块之shutil模块模块详解
    模块之sys模块详解
    模块之os模块详解
    map遍历
    java完美处理表情符
    死磕设计模式—建造者模式
    Java String getChars()方法
    Java知识系统回顾整理01基础06数组05复制数组
    Java知识系统回顾整理01基础06数组04增强型for循环
  • 原文地址:https://www.cnblogs.com/lobsterIT/p/2706268.html
Copyright © 2020-2023  润新知