台阶问题
Posted lesroad
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了台阶问题相关的知识,希望对你有一定的参考价值。
题目描述
有 N 级的台阶,你一开始在底部,每次可以向上迈最多 K 级台阶(最少 1 级),问到达第 N 级 台阶有多少种不同方式。输入
多组输入,两个正整数N(N ≤ 1000),K(K ≤ 100)。
输出
一个正整数,为不同方式数,由于答案可能很大,你需要输出 ans mod 100003 后的结果。
dp[n]由dp[n-1] +dp[n-2]+ ... +dp[n-k]而来。
#include <bits/stdc++.h> using namespace std; int dp[1010]; int main() { int n,k; while(~scanf("%d%d",&n,&k)) { memset(dp,0,sizeof(dp)); dp[0]=1; for(int i=1; i<=n; i++) for(int j=1; j<=k&&(i-j)>=0; j++) dp[i] = (dp[i]+dp[i-j]) % 100003; printf("%d ",dp[n]); } return 0; }
以上是关于台阶问题的主要内容,如果未能解决你的问题,请参考以下文章
《剑指Offer——10- I. 斐波那契数列,10- II. 青蛙跳台阶问题63. 股票的最大利润》代码