动态规划

  1. 长度为n的dp数组;
  2. 前两项初始化为1;
  3. 确定递推关系:dp[i]=dp[i-1]+dp[i-2];
  4. 返回第n项:dp[n-1]。
class Solution {
public:
    int Fibonacci(int n) {
        vector<int> dp(n);
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i < n; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n - 1];
    }
};
class Solution {
public:
    int Fibonacci(int n) {
        int dp[2];
        dp[0] = 1;
        dp[1] = 1;
        for (int i = 2; i < n; i++) {
            int sum = dp[0] + dp[1];
            dp[0] = dp[1];
            dp[1] = sum;
        }
        return dp[1];
    }
};