k级台阶问题
给出台阶数n和能走的步数k(一次可以走1、2、3......k步),求到达n层有几种走法。。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
#include<vector>
#include<stack>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
int f[100100];
int main() {
int n, k;
cin>>n>>k;
f[0] = 1;//第0层有1种走法
for (int i = 1;i<=n;i++){
for (int j = 1;j<=k&&(i-j)>=0;j++){
f[i] += f[i - j];//f[i]值为走到第i层有几种方法,而第i+1层的方法数量是从f[i-k]到f[i]的值之和
f[i] %= 100003;
}
}
cout << f[n];
return 0;
}