hdu2047 阿牛的EOF牛肉串

题意:有三个字母EOF,输入n的长度,每个位置上都可能出现他们三个,但是要求o o 不能连在一起出现。
分析:这题和hdu2045三个颜色放在一条直线上,头尾不能相同相邻不同色,分析过程很像,都是假设n长度在n-1长度基础上加一,有两种可能,如果加入是O,那么n-1有两种可能就是f(n-2)*2,如果不是O,后插入字符有两种可能,就是f(n-1)*2.
所以递推式 f(n)=2*(f(n-2)+f(n-1));

#include<cstdio>
#include<cstring>
using namespace std;
long long a[55];
int main()
{
   memset(a,0,sizeof(a));
   a[1]=3,a[2]=8;
   for(int i=3;i<=50;i++)
        a[i]=a[i-1]*2+a[i-2]*2;
   int n;
   while(~scanf("%d",&n))
   {
       printf("%lld\n",a[n]);
   }
}

你可能感兴趣的:(hdu2047 阿牛的EOF牛肉串)