台阶问题

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;

 

以上是关于台阶问题的主要内容,如果未能解决你的问题,请参考以下文章

青蛙跳台阶的问题

跳台阶,变态跳台阶,矩阵覆盖

台阶问题

跳台阶问题(递归动态规则变态跳台阶)

回溯动态规划,用Python解决台阶问题

青蛙跳台阶问题