本题关键是要运用递归,并把问题抽象
#include<stdio.h>
void hanoi(int x,char a[],char b[],char c[]){//汉诺塔函数
if(x==1)//当x=1时,意味着只有一个盘子,此时的方法就是直接从a移到c
printf("%s->%s\n",a,c);
else{//x不是1
hanoi(x-1,a,c,b);//把除了最底层盘子上的(x-1)个盘子从a移到b
printf("%s->%s\n",a,c);//把最底层的盘子移到c
hanoi(x-1,b,a,c);//把(x-1)个盘子从b移到c
}
}
int main()
{
int n;
scanf("%d",&n);//输入盘子个数
char m=getchar();//得到输入时的回车
char a[100];
char b[100];
char c[100];
gets(a);//输入a
gets(b);//输入b
gets(c);//输入c
hanoi(n,a,b,c);//调用函数
return 0;
}