跳台阶
上n层楼梯,最后一步要不就是上1层,要不就是上两层,所以上n层楼梯的方法数量就等于最后跳一层也就是上n-1层台阶的方法数量加上最后跳两层也就是上n-2层台阶的方法数量。
class Solution {public:// 1 递归 斐波那契数列 f(n) = f(n-1) + f(n-2)// 2 数组代替栈保存中间结果// 3 滑动数组代替栈保存中间结果int numWays(int n) {if (n == 0) return 1;if (n <= 2) return n;int num1 = 1, num2 = 2, res = 0;while (n-- > 2){res = (num1 + num2) % int(1e9+7);num1 = num2;num2 = res;}return res;}};
斐波那契数列
#include <iostream>#include <vector>using namespace std;vector<int> fseq(int n) {vector<int> res(n);res[0] = 0;res[1] = 1;for (int i = 2; i < n; i++) {res[i] = res[i-1] + res[i-2];}return res;}int main(int argc, char *argv[]) {vector<int> res(fseq(10));for (int n : res) cout << n << ' ';cout << endl;return 0;}
