有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。为了防止溢出,请将结果Mod 1000000007
给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。
测试样例:
1
返回:1
class GoUpstairs {
public:
int countWays(int n) {
// write code here
vector<int> dp(n+1, -1);
dp[0] = 0, dp[1] = 1, dp[2] = 2;
return f(n, dp);
}
int f(int n, vector<int>& dp)
{
if (dp[n] != -1)
return dp[n];
else
{
int ret = (f(n-1,dp) + f(n-2,dp)) % 1000000007;
dp[n] = ret;
return ret;
}
}
};