链接: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; }