台阶问题
fib数列大家都知道,
跳台阶问题就是FIB数列的经典问题,那么这个题又是怎么来的呢?
首先假设我们在N阶,那么可以从N-p阶跳过来,p的取值范围那就是1~K,为啥?
你一次可以从这些阶的地方上跳p阶,那就到了N阶,所以,这些方案数累加就可以了.
具体代码如下:
#include<iostream>
using namespace std;
long long ans[100001];
int n,k;
int main(){
cin>>n>>k;
ans[0]=1;
ans[1]=1;
if(ans[n]==0){
for(int i=2;i<=n;i++){
for(int ii=1;(ii<=k)&&(i-ii>=0);ii++)
ans[i]+=ans[i-ii];
ans[i]%=100003;
}
}
cout<<ans[n];
return 0;
}

浙公网安备 33010602011771号