本题题干有点狗,我也是看了题解才知道的,它说直至文件末尾,表明有多重测试数据,所以需要写循环语句直至没有输入
大体思路和汉诺塔一样,可能不一样的就是柱子的跳跃问题。我这里表示的是前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;
}