死变态的跳台阶

Problem Description
小银今天准备去爬山,山上的台阶太难爬了,但是小银最近得到了一个新的技能,他每一次可以向上跳一个台阶,也可以两个台阶,也可以三,四,五…….n个台阶。现在已知台阶的数量为n,小银想知道他有多少种方法跳上山顶。

Input
多组输入,每组输入一个整数n(1 <= n <= 10^5)。

Output
输出跳上n个台阶总共的跳法,由于结果可能非常的大,结果对1000000007取余。(%1000000007)

Sample Input
1
2
Sample Output
1
2

#include <stdio.h>

int main()
{
    int n, i, sum;
    while(scanf("%d", &n) != EOF){
        sum = 1;
        for(i = 1; i < n; i++)
            sum = (sum*2)%1000000007;
        printf("%d\n", sum);
    }
    return 0;
}

这个题用递归做必定超时:
一下用递归做的:

#include <stdio.h>

int main()
{
    int n, i, j;
    int a[100004];
    a[1] = 1;
    for(i = 2; i <= 100000; i++){
        a[i] = 1;
        for(j = 1; j < i; j++)///递推公式
            a[i] = (a[i] + a[j])%1000000007;
    }
    while(scanf("%d", &n) != EOF){
        printf("%d\n", a[n]);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41341757/article/details/81812095
今日推荐