代码
#include <iostream>
using namespace std;
typedef long long LL;
LL dp[36]={0};
int main() {
for(int i=1; i<36; i++){
dp[i] = 3*dp[i-1]+2;
}
int n;
while(cin>>n){
cout<<dp[n]<<endl;
}
return 0;
}
注解
1、递推关系。
要计算f(n),首先把n-1个盘子由A经过B移到C,为f(n-1)。
然后把第n个从A移到B。
接着把n-1个盘子由C经过B移到A,为f(n-1)。
再把第n个盘子由B移到C。
最后把n-1个盘子由A经过B移到C,为f(n-1)。
2、所以递推关系:f(n)=3*f(n-1)+2