有3个柱子A,B,C,要求将A上的x个圈移动到C上,每次移动一个圈,并且要求大圈在下,小圈在上。如果A上只有1个圈,显然直接移到C即可。否则需要将A上的圈通过B移到C。
代码如下
#include <stdio.h>
void move (char x,char y)
{
printf("%c->%c\n",x,y);
}
void Hanoi(int n , char one , char two , char three)
{
if(n==1)
move(one,three);
else
{
Hanoi(n-1,one,three,two);
move(one,three);
Hanoi(n-1,two,one,three);
}
}
int main()
{
int m;
scanf("%d",&m);
Hanoi(m,'A','B','C');
return 0;
}
样例输入:
3
样例输出:
A->C A->B C->B A->C B->A B->C A->C