题目描述
有 N 级台阶,你一开始在底部(第0个台阶),每次可以向上迈 1∼K 级台阶,问到达第 N 级台阶有多少种不同方式。
输入格式
两个正整数 N,K。
输出格式
一个正整数 ans(mod100003),为到达第 N 级台阶的不同方式数。
输入输出样例
输入 #1
5 2
输出 #1
8
题目也是很简单的
是一个动态规划的题(DP)
a[x] = 前K个台阶的值之和
毕竟是从之前的台阶走来的
所以只要动动脑子就能写出来
以下是代码
#include <bits/stdc++.h>
using namespace std;
int n,k;
long long a[10000000] = {0};
int main(){
cin>>n>>k;
a[0] = 1,a[1] = 1;
for(int i = 2;i <= n;i++){
for(int j = 1;j <= k;j++){
if(i - j < 0){
break;
}
a[i] += a[i - j];
}
a[i] = a[i] % 100003;
}
cout<<a[n];
return 0;
}
点个赞吧
求求了
想要粉丝
2万+

被折叠的 条评论
为什么被折叠?



