题目描述:![标题](https://i-blog.csdnimg.cn/blog_migrate/760918070a6925b61ef12b3b679fab5c.png)
#include <stdio.h>
int step,i; /*i为第几个盘子*/
void move(int n,char A,char B,char C)
{
for(i=1;i<=n;i++)
{
if(n>0)
{
move(n-1,A,C,B);
step++;
printf("%d: %c--->%c\n",i,A,C);
move(n-1,B,A,C);
}
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n>0)
{
step=0;
move(n,'A','B','C');
printf("%d\n",step);
printf("\n");
}
return 0;
}
终于把这个代码写出来了,虽然写出来了,但是是看着书上的例题写的,所以不是完完全全属于自己,我也还有一些不太懂的地方,还需要继续研究研究这个代码。
在这里附上班上大神写的代码,好好学习一下:
#include <stdio.h>
int step;
void honoi_tower(int n,char a,char b,char c,int id)
{
if(!n) return;
honoi_tower(n-1,a,c,b,id-1);
++step;
printf("%d: %c--->%c\n",id,a,c);
honoi_tower(n-1,b,a,c,id-1);
}
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
step=0;
honoi_tower(n,'A','B','C',n);
printf("%d\n\n",step);
}
return 0;
}