汉诺塔

 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 }

 

汉诺塔

上一篇:【CCF-CSP】Z字形扫描


下一篇:006 PCI总线的桥与配置(一)