0
点赞
收藏
分享

微信扫一扫

算法设计 --- 动态规划详解

芝婵 2022-03-12 阅读 95

算法设计有动态规划、分而治之、回溯发、贪心算法。其中,动态规划是面试时最为常考的一种算法。

什么是动态规划?
它将一个问题分解为相互重叠的子问题,通过反复求解子问题,来解决原问题。
比如:斐波那契数列 F(n) = F(n-1) + F(n-2)

  • F(0) = 0, F(1) = 1
  • F(2) = F(1) + F(0) = 1+0 = 1
  • F(3) = F(2) + F(1) = 1 + 1 = 3

应用动态规划解决问题时,我们总是从解决最小问题开始,并把已经解决的子问题的最优解存储下来(可以存到一维或二维数组中),最后把子问题组合起来解决大的问题。通常,分析问题可以从上往下分析,但是解决问题推荐自下而上的方式。

动态规划解决问题的步骤:

  • 定义子问题;
  • 反复执行。

动态规划和分而治之的区别是什么?
主要针对的子问题不同,子问题是相互重叠的用动态规划,是相互独立的用分而治之

动态规划练习题:offer10 斐波那契数列、offer89 房屋偷盗、198 打家劫舍、70 爬楼梯

举报

相关推荐

0 条评论