将a柱上的n个盘子移到c的过程是怎样的呢?
这个过程分三个阶段:
1.n-1个盘子从a移到b;
2.将1个盘子从a移到c;
3.然后问题又回到了最初的状态,只不过此时是将剩余的n-1个盘子从b移到c罢了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void move(int n,char a,char b,char c)
{
if(n==1) printf("%c->%c\n",a,c);
else
{
move(n-1,a,c,b);
printf("%c->%c\n",a,c);
move(n-1,b,a,c);
}
}
int main()
{
int a,b,z,t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
move(n,'a','b','c');
}
return 0;
}