描述
题解
可以考虑为两种情况,一种是竖着放一个,则前边的位置有F[n - 1]
种,另一种是横着放两个,则前边的位置有F[n - 2]
种,由此可以发现这里的F[n]
符合斐波那契数列,所以F[n] = F[n - 1] + F[n - 2]
。
代码
#include <iostream>
using namespace std;
const int MOD = 1e9 + 7;
const int MAXN = 1e3 + 10;
unsigned int Fibonacci[MAXN];
int main(int argc, const char * argv[])
{
Fibonacci[0] = Fibonacci[1] = 1;
int n;
cin >> n;
for (int i = 2; i <= n; i++)
{
Fibonacci[i] = (Fibonacci[i - 1] + Fibonacci[i - 2]) % MOD;
}
std::cout << Fibonacci[n] << '\n';
return 0;
}