JD4. 上台阶
描述
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。
给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100。为了防止溢出,请返回结果Mod 1000000007的值。
3
返回:2
C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-09-27
class GoUpstairs { public: int countWays(int n) { int a[102]={0}; a[0]=0; a[1]=1; a[2]=2; if(n>2){ for(int i=3;i<n;i++){ a[i]=(a[i-1]+a[i-2])%1000000007; } } return a[n-1]; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-09-25
class GoUpstairs { public: int countWays(int n) { // write code here if(n==1) return 0; if(n==2) return 2; vector<int> dp(n+1); dp[1]=1; dp[2]=1; //2级楼梯 没有0级啊 for(int i=3;i<=n;i++) dp[i]=(dp[i-1]+dp[i-2])%1000000007; return dp[n]; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-09-24
class GoUpstairs { public: int countWays(int n) { // write code here int z[102]={0}; z[0]=0; z[1]=1; z[2]=2; if(n>2){ for(int i=3;i<n;i++){ z[i]=(z[i-1]+z[i-2])%1000000007; } } return z[n-1]; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-08-27
class GoUpstairs { public: int countWays(int n) { if(n<=0) return 0; if(n==1) return 0; if(n==2) return 1; long long f[102] = { 0 }; f[1]=1; f[2]=1; int i=3; while(i<=n) { f[i]=(f[i-1]+f[i-2])% 1000000007; ++i; } return f[i-1]; } };
C++ 解法, 执行用时: 2ms, 内存消耗: 376KB, 提交时间: 2020-08-25
class GoUpstairs { public: int countWays(int n) { const int MOD = 1000000007; int n_1 = 1, n_2 = 1, res = 0; for(int i = 3; i <=n; ++i){ res = (n_1+n_2)%MOD; n_2 = n_1; n_1 = res; } return res; } };