f[1]=3;
f[2]=6;
f[3]=6;
i>3 时,假如i-1个格子填的颜色与第一个格子颜色不相同,那么我们填第i个格子时,只能填一种颜色,此颜色与第一个格子和i-1个格子的颜色都不相同,数量是f[i-1](因为这样前i-1个格子的颜色符合要求);
假如i-1个格子填的颜色与第一个格子的颜色相同,那么我们填第i个格子时,可以就填两种颜色,数量是f[i-2](因为这样只有前i-2个格子的颜色是符合要求的)。
#include <stdio.h>
__int64 f[55];
void solve()
{
int i;
f[1]=3;
f[2]=6;
f[3]=6;
for(i=4;i<=51;i++)
f[i]=f[i-1]+2*f[i-2];
}
int main()
{
int n;
solve();
while(scanf("%d",&n)==1)
{
printf("%I64d\n",f[n]);
}
}