时间限制:C/C++ 1秒,其他语言2秒 |
题目
继上次Jhadgre在楼梯上跳台阶玩了很久之后,他获得了一个很强(la)力(ji)的能力,那就是上楼梯的时候可以跨任意偶数级台阶....
今天上完课,Jhadgre又开始了他的跳台阶之旅,现在他想知道跳到第N级台阶有多少种方案数。
P.S.Jhadgre从楼梯外也就是第0级开始跳,并且依旧可以选择跳一级
题意
现有一个台阶,从第0级开始,可以一次跨任意偶数级台阶,也可以跨越一级台阶,问跳到第n级台阶的方案数。
可以由前一个状态,推出当前状态,前一个状态可以是任意向前的偶数步和向前的一步。
比如第3级台阶,可以是第2级的加上第1级的; 第4级台阶,可以是第3级的加上第2级的加上第0级的
代码实现:
#include <stdio.h>
#define mo 100000007
int f[10010];
int main() {
f[0]=1;
for(int i=1;i<=10005;i++){
f[i]=f[i-1];
for(int j=i-2;j>=0;j-=2){
f[i]=(f[i]+f[j])%mo;
}
}
int n;
while(~scanf("%d",&n)){
printf("%d\n",f[n]);
}
return 0;
}