链接:http://acm.hdu.edu.cn/showproblem.php?pid=2045


判断N=i时,分两种情况,

1: 第1位==第i-1位

因为第一位与倒数第二位相同,所以第i位可以取剩下两种颜色


2:第1位!=第i-1位

第i位只能取剩下的一种颜色


#include <iostream>
#define MAX_N 50
using namespace std;
long long f[MAX_N+1];
int main()
{
    int n;
    f[1]=3;
    f[2]=6;
    f[3]=6;
    for(int i=4;i<=MAX_N;i++)
        f[i]=f[i-1]+f[i-2]*2;
    while(cin>>n)
    {
        cout<<f[n]<<endl;
    }
    return 0;
}