思路:
这是一道递归题
f(n)=1,2,3....n-2,n-1,n
当前n-2个已经涂好的时候,涂第n-1个有两种情况
(1)当第n-1的颜色与n-2和1的颜色都不同时,那第n个的颜色只有一种。即f(n-1)
(2)当第n-1的颜色与n-2的不同与1的相同,那么第n-1个颜色有两种选择(即和n-2的颜色不同)。即f(n-2)*2
综上所述
f(n)=f(n-1)+2*f(n-2);
#include<iostream>
using namespace std; int main() { int n,i; while (cin >> n) { __int64 a[50]; a[1] = 3, a[2] = 6, a[3] = 6; for (i = 4; i < 51; i++) { a[i] = a[i-1] + 2 * a[i-2]; } cout << a[n] << endl; } return 0; }