思路关键:令f[n] 为长度为n时 的所有合法情况
当最后一个是 E 总数为 f[n-1]
当最后一个是 F 同上
当最后一个是 O 时 n-1 为E或F才合法 所以有 2*f[n-2]个
代码:
#include<stdio.h>
int main()
{
__int64 a[45]={0,3,8};
int i,n;
for(i=3;i<45;i++)
a[i]=2 * (a[i-1]+a[i-2]);
while(~scanf("%d",&n))
printf("%I64d\n",a[n]);
return 0;
}