#include<stdlib.h>
int count=0;
void Move(char getone,char putone)
{
printf("%c --> %c \n",getone,putone); //显示步骤
count++; //统计步数
}
void hannuota(int n,char a,char b,char c)
{
if(n==1)
Move(a,c);
else
{
hannuota(n-1,a,c,b); //将 a 中除了底牌外其余小的的通过 c 暂时放在 b
Move(a,c); //将 a 中底牌直接放在 c
hannuota(n-1,b,a,c); //将 b 中的所有小的牌通过 a 放在 c 中底牌的上面
}
}
int main()
{
int m,g=0;
scanf("%d",&m);
hannuota(m,'a','b','c');
printf("移动次数:%d\n",count);
return 0;
}
网友评论