首页 > 其他 > 详细

汉诺塔

时间:2021-08-21 22:46:35      阅读:49      评论:0      收藏:0      [点我收藏+]
 1 #include <stdio.h>
 2 
 3 /**
 4  * 汉诺塔
 5  * 游戏规则:
 6  *     下一层必须大于上一层
 7  *     每次只能移动最上面的一层
 8  *      获取圆盘的个数n
 9  *      n=3,分步骤:a->c,a->b,c->b,a-c,b-a,b->c,a->c
10  */
11 void move(int n,char a,char b,char c){
12     /**
13      * 伪算法
14      *
15      * 如果是1
16      *      直接将A柱子上的n个盘子从A移动到C
17      * 否则
18      *      先将A柱子上的n-1个盘子借助C移动到B
19      *      直接将A柱子上的n个盘子从A移动到C
20      *      最后将B柱子上的n-1个盘子借助A移动到C
21      */
22      if(1 == n)
23      {
24          printf("No:%d,%c-->%c\n",n,a,c);
25      }
26      else
27      {
28         move(n-1,a,c,b);
29         printf("No:%d,%c-->%c\n",n,a,c);
30         move(n-1,b,a,c);
31      }
32 }
33 
34 int main(){
35     int len;
36     printf("num:");
37     scanf("%d",&len);
38     if(!(len > 0)){
39         return 0;
40     }
41     char a= A;
42     char b= B;
43     char c= C;
44     move(len,a,b,c);
45     return 0;
46 }

 

汉诺塔

原文:https://www.cnblogs.com/heyusheng/p/15170645.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!