#include <iostream>
using namespace std;
const long long int N=1e9+7;
bool a[100006];//是否坏
int f[100006];//到这级台阶的方案数
int main()
{
int n,m;//n个台阶坏了m个台阶
cin>>n>>m;
int p;
for(int i=1;i<=m;i++){
cin>>p;
a[p]=true;
}
f[0]=1;//0级
f[1]=1;//1级
for(int i=2;i<=n;i++ ){
if(a[i-2]!=true){
f[i]=(f[i]+f[i-2])%N;
}
if(a[i-1]!=true){
f[i]=(f[i-1]+f[i])%N;
}
}
if((n==1&&m==1)||a[n]==true)cout<<0;
else{
cout<<f[n];
}
// 请在此输入您的代码
return 0;
}
注意:
(n==1&&m==1)||a[n]==true特判条件:只有一级台阶坏了一级那么输出0,如果最高级坏了就是0种可能。
标签:破损,台阶,cout,--,long,int,&&,true From: https://www.cnblogs.com/luckyyaoyao/p/17975371