当前位置 博文首页 > Aaron_Yang:LeetCode509:斐波那契数列(动态规划入门)

    Aaron_Yang:LeetCode509:斐波那契数列(动态规划入门)

    作者:[db:作者] 时间:2021-07-17 15:47

    题目:

    斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

    F(0) = 0,F(1) = 1
    F(n) = F(n - 1) + F(n - 2),其中 n > 1
    给你 n ,请计算 F(n) 。

    示例:

    在这里插入图片描述

    思路:

    ?? ? ? 以往我们面对这类题是通过递归解法,return function(n-1)+function(n-2)。但是现在,我们通过动态规划来解决此类问题。斐波那契数列是一道非常基础的动态规划题,我们可以通过动态规划的解题步骤轻松地进行解决。

    1. 确定dp数组(dp table)以及下标的含义
    2. 确定递推公式
    3. dp数组如何初始化
    4. 确定遍历顺序
    5. 举例推导dp数组

    代码:

    class Solution {
    public:
        int fib(int n) {
            vector<int>dp(n+1);
            if(n<=1)    return n;
            dp[0]=0; dp[1]=1;
            for(int i=2;i<=n;i++)
            {
                dp[i] = dp[i-1]+dp[i-2];
            }
            return dp[n];
        }
    };
    
    cs