思路:我先模拟了一下1,2,3的情况,对应的是3 6 6,模拟到4的时候就有感觉了,1是不受到任何制约的,2到n-1是收到了前面一个的制约,n受到了n-1与1的制约,那么就可以去判断4 = 3 * 2 * 1 * 2(n-1与1同色) + 3 * 2 * 1 *1(n-1与1不同色)。那么不同色也就是3对应的情况同色则是与2对应的情况就是可以得出f(n) = f(n - 1) + f(n-2)*2
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<long long> nums(51);
nums[0] = 0;
nums[1] = 3;
nums[2] = 6;
nums[3] = 6;
for (int i = 4; i < 51; i++) {
nums[i] = nums[i - 1] + nums[i - 2] * 2;
}
int n;
while (cin >> n) {
cout << nums[n] << endl;
}
return 0;
}