有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。
给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。
测试样例: 3 返回:2 递归算法超时“test.cpp”
class GoUpstairs { public: int countWays(int n) { // write code here if(n == 0 || n == 1){ return 0; } else if(n == 2){ return 1; } else if(n == 3){ return 2; } return countWays(n-1) + countWays(n-2); } };
动态规划
“test.cpp”
class GoUpstairs { public: int countWays(int n) { // write code here vector<int> arr(n+1); arr[0] = 0; arr[1] = 0; arr[2] = 1; arr[3] = 2; for(size_t i = 4;i < n + 1;i++){ arr[i] = (arr[i-1]+arr[i-2]) % 1000000007; } return arr[n]; } };