蓝桥杯 进击的青蛙
注意其实dp 前三个点的判断。
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long ll;
const int N =1e6+10;
ll n,m=0;
struct cmp{
bool operator()(const int&a,const int&b) const{
return a>b;
}
};
const int MOD = 1000000007;
ll a[N];
int main(){
cin >> n;
for(int i =1;i<=n;i++){
cin>>a[i];
}
a[1] == 0? a[1]=1:a[1]=0;
a[2] == 0? a[2] =a[1]+1:a[2]=0;
a[3] == 0? a[3] =a[1]+a[2]+1:a[3]=0;
for(int i =4;i<=n;i++){
if(a[i]) a[i]=0;
else
a[i]=((a[i-1]%MOD)+(a[i-2]%MOD)+(a[i-3]%MOD))%MOD;
}
//for(int i = 1;i<=n;i++)cout<<a[i]<<" ";
if(a[n]) cout<< a[n];
else cout<<"No Way!";
return 0;
}