有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];
}
*/
};