爬楼梯

来源:互联网 发布:java判断上午还是下午 编辑:程序博客网 时间:2024/04/30 12:29

有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。为了防止溢出,请将结果Mod 1000000007

给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。

测试样例:
1
返回:1

class GoUpstairs {public:    int countWays(int n) {   // 动态规划        if (n < 3)     return n;        vector<int> dp(n+1, -1);//包括0         dp[0] = 0, dp[1] = 1, dp[2] = 2;        for (int i = 3; i <= n; i++)//从3开始            dp[i] = (dp[i-1] + dp[i-2]) % 1000000007;        return dp[n];    }/*    int countWays(int n) {// 暴力搜索法        int hash[100001];//因为最大值为100000        hash[0] = 0;        hash[1] = 1;        hash[2] = 2;        for (int i = 3; i <=n; i++)        {           hash[i] =(hash[i - 1] + hash[i - 2])%1000000007;        }        return hash[n];    }*/};