台阶问题
Posted 诸葛阵御
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了台阶问题相关的知识,希望对你有一定的参考价值。
题目描述
有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。
输入格式
两个正整数N,K。
输出格式
一个正整数,为不同方式数,由于答案可能很大,你需要输出ans mod 100003后的结果。
输入输出样例
输入 #1复制
5 2
输出 #1复制
8
说明/提示
对于20%的数据,有 N ≤ 10,K ≤ 3;
对于40%的数据,有 N ≤ 1000;
对于100%的数据,有 N ≤ 100000,K ≤ 100。
#include <stdio.h>
int main()
{
int n,k;
int mod=100003;
scanf ("%d %d",&n,&k);
int a[n+5]={0}; //每个台阶的方案数(即保存每个数的结果
a[0]=1;
a[1]=1;
for (int i=2;i<=n;i++) {
for (int j=1;j<=k;j++) {
if (i>=j) {
a[i]=(a[i]+a[i-j])%mod; //注意取模
}
}
}
printf ("%d",a[n]);
return 0;
}
以上是关于台阶问题的主要内容,如果未能解决你的问题,请参考以下文章
《剑指Offer——10- I. 斐波那契数列,10- II. 青蛙跳台阶问题63. 股票的最大利润》代码