台阶问题

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. 股票的最大利润》代码

递归经典:汉诺塔问题和青蛙跳台阶的三个问题(爆肝的数学推理步骤以及详细代码)

1192 台阶问题

剑指offer跳台阶