HDU 2047
Posted lukelmouse
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 2047相关的知识,希望对你有一定的参考价值。
思路
考虑第 (n) 位为 (F) 或者 (E) ,第 (n - 1) 位,可以填(3) 个字母, (f[n] = 1*2f[n-1])
考虑第 (n) 位为(O) ,因为两个(O) 不能相邻,所以,第 (n- 1) 位,只能填(2) 个字母,第(n-2) 可以填(3)个字母
(f[n]=1*2*f[n-2])
总共的答案是 (f[n]=2(f[n-1] + f[n-2]))
#include <bits/stdc++.h>
using namespace std;
const int N = 100;
typedef long long LL;
LL f[N] = {0,3,8},k = 2;
int main() {
int n;
while(cin >> n) {
if(n > k) {
while(k <= n) {
k ++;
f[k] = (f[k - 1] + f[k - 2]) * 2;
}
}
cout << f[n] << endl;
}
return 0;
}
以上是关于HDU 2047的主要内容,如果未能解决你的问题,请参考以下文章