这两天玩了玩汉诺塔的游戏,对汉诺塔有了解了一点。大概就是,要先把最大的那一个移到C柱子上,就要把A柱子最大的上面那些圆盘的借助C柱子移到B柱子上,在把A上最大的移到C上,最后把B上的圆盘借助A移到C。
/*汉诺塔*/
#include<stdio.h>
void move(int x,char A,char B);
int HanoTower(int x,char A,char B,char C);
int main(){
int x;
char A='A',B='B',C='C';//三个字母代表A,B,C三个塔
printf("这是一个汉诺塔的移动次序问题\n");
printf("请输入汉诺塔的层数:\n");
scanf("%d",&x);
HanoTower(x,A,B,C);
}
int HanoTower(int x,char A,char B,char C){
if(x!=1){
HanoTower(x-1,A,C,B);
move(x,A,C);
HanoTower(x-1,B,A,C);
}
else move(x,A,C);
return 0;
}
void move(int x,char A,char B){
static int count=0;
count++;
printf("第%-2d次移动,%d从%c->%c\n",count,x,A,B);
}