爬台阶
题目描述
有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]; } };