动态规划 fibonacci数列

2019-05-30  本文已影响0人  xiaowentao

在传统的fibonacci数列的基础上使用动态规划,即申请一个dp数组用来存储计算过的子阶乘,当重复遇到这个阶乘时可以直接返回。使计算的复杂度大大下降。这是由于fibonacci数列存在重复子问题以及最优子结构决定的。

/*
 * @lc app=leetcode id=509 lang=cpp
 *
 * [509] Fibonacci Number
 */
class Solution {
    int dp[120];
public:
    int fib(int N) {
        for(int i=0;i<120;i++)
        {
            dp[i] = -1;
        }

        return f(N);

        
    }
    int f(int n)
    {
         if(n==1)
              return 1;
         if(n==0)
              return 0;
     if(dp[n]!=-1)//说明已经计算过
       return dp[n];
     else
     {
       dp[n]=f(n-1)+f(n-2);
       return dp[n];
     }
    }
};

上一篇 下一篇

猜你喜欢

热点阅读