题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1031
思路:没次增加时要么是最后添加竖的一块,要么是横的一块,宽度占掉2,可以从之前的状态转换过来
#include<cstdio>
#include<queue>
#include<iostream>
#include<vector>
#include<map>
#include<cstring>
#include<string>
#include<set>
#include<stack>
#include<algorithm>
#define cle(a) memset(a,0,sizeof(a))
#define inf(a) memset(a,0x3f,sizeof(a))
#define ll long long
#define Rep(i,a,n) for(int i=a;i<=n;i++)
using namespace std;
const int INF = ( 2e9 ) + 2;
const ll maxn = 1100;
const int mod = 1e9+7;
int f[maxn];
int main()
{
int n;
scanf("%d",&n);
f[0]=f[1]=1;
for(int i=2;i<=n;i++)
f[i]=(f[i-1]+f[i-2])%mod;
printf("%d",f[n]);
}