题目
题解思路
递推思路:
设三个点为A B C
设将n层塔从A经B挪到C需要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]步,
总计3f[n-1] + 2步,其中 f[1] = 2;
于是有 a[i] = 3a[i-1] + 2
递归思路
暂时还看不懂,我是废物
AC代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll a[40];
int main ()
{
a[1]=2;
for(int i = 2 ; i <= 35 ;i ++)
a[i] = 3*a[i-1] + 2 ;
int n;
while(cin>>n)
cout<<a[n]<<"\n";
return 0;
}