#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main ()
{
int n,i;
ll e[45],o[45];
e[1] = 2;o[1] = 1;
while(scanf("%d",&n)==1)
{
for(i = 2;i<=n;i++)
{
o[i] = e[i-1];
e[i] = 2*e[i-1]+2*o[i-1];
}
printf("%lld\n",e[n]+o[n]);
}
return 0;
}
另外递推公式还可以写做:S[n] = 2S[n-1]+2S[n-2],结合树状图知,不妨都按o的情况算,再加上实际上E和F的数量(2*S【n-2】)即可.
【题目链接】(http://acm.hdu.edu.cn/showproblem.php?pid=2047)