爬台阶

题目描述

N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。

输入输出格式

输入格式:

两个正整数N,K。

输出格式:

一个正整数,为不同方式数,由于答案可能很大,你需要输出ansmod100003后的结果。

输入输出样例

输入样例#1: 复制
5 2
输出样例#1: 复制
8
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N=100010;
int a[N];
int main(void){
    int n,k;
    cin>>n>>k;
    a[0]=1;
    for(int i=1;i<=k;i++)a[i]=1;
    for(int i=1;i<=n;i++)
        for(int j=max(1,i-k);j<i;j++)
            a[i]+=a[j]%100003;
    cout<<a[n]%100003<<endl;
    return 0;
}

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
class Solution {
public:
    int jumpFloorII(int number) {
        vector<int>f(number+1,0);
        f[0]=1,f[1]=1;
        for(int i=2;i<=number;i++){
            for(int j=0;j<i;j++)
                f[i]+=f[j];
        }
        return f[number];
    }
};

 

posted @ 2019-07-23 15:40  YF-1994  阅读(186)  评论(0编辑  收藏  举报