本题题干有点狗,我也是看了题解才知道的,它说直至文件末尾,表明有多重测试数据,所以需要写循环语句直至没有输入
大体思路和汉诺塔一样,可能不一样的就是柱子的跳跃问题。我这里表示的是前i个盘子从a到b再从b到c,其次就是注意答案的数据大小
代码
#include<iostream>
using namespace std;
int n;
int deal(int i,char a,char b,char c)
{
long long step=0;
if(i==1)
{
return 2;
}
step+=deal(i-1,a,b,c);
step++;
step+=deal(i-1,c,b,a);
step++;
step+=deal(i-1,a,b,c);
return step;
}
int main()
{
long long step=0;
int n;
while(cin>>n)
{
step=deal(n,'a','b','c');
cout<<step<<endl;
}
return 0;
}