题目大意:
在2*N的一个长方形方格中,用一个1*2的骨牌排满方格。问有多少种不同的排列方法。
题解:
考虑最右边的一列的铺法。如果用一个骨牌直接覆盖,那么剩下2*(n-1)方格(有f(n-1)种)
如果用两个横向的骨牌覆盖,那么剩下2*(n-2)方格(有f(n-2)种)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
const int MOD=1e9+7;
typedef long long ll;
using namespace std;
ll f[1010];
int main()
{
int n;
f[1]=1;
f[2]=2;
for(int i=3;i<=1010;i++)
f[i]=(f[i-1]+f[i-2])%MOD;
cin>>n;
cout<<f[n]<<"\n";
return 0;
}