台阶问题

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;
}

posted @ 2017-08-03 17:38  多功能的荀彧  阅读(129)  评论(0)    收藏  举报