解析:
设 f[i][0] :表示选c
f[i][1]:表示选y
状态转移方程:
f[i][0]=f[i][0]+f[i-1][1] 因为不能连续cc 所以前一位必须是y
f[i][1]=f[i][0]+f[i-1][0]+f[i-1][1] 因为放的y,前一位随便放
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100005;
const int MOD=1e9+7;
ll f[N][2];
int n;
int main()
{
scanf("%d",&n);
f[1][0]=1;f[1][1]=1;
for(int i=2;i<=n;i++)
{
f[i][0]=(f[i][0]+f[i-1][1])%MOD;
f[i][1]=(f[i][1]+f[i-1][1]+f[i-1][0])%MOD;
}
cout<<(f[n][0]+f[n][1])%MOD<<endl;
}