动态规划

dp总体思想
对于每一步决策,都列出各种可能的局部解,根据判断,舍弃一定不能得到最优解的局部解,在每一步都经过筛选,以至于每一步都是最优解来保证全剧最优解

动态规划多用于最优化问题,关键是存储子问题的每一个解,以备它重复出现

最优化问题第一反应:贪心或者dp

能采取dp的条件:

  1. 问题中的状态必须满足最优解原理
  2. 问题中的状态继续满足无后效性原则

无后效性:下一时刻的状态只与当前状态有关,与当前状态之前的状态无关,当前的状态是以往状态的总结

递归

解决斐波那契每一步都需要重复计算:用空间换时间

比如f5已经计算,令dp5等于f5,后期运营时,如果dp5不等于0就直接拿来用

重叠子问题
如果一个问题可以被分解为若干个字问题,并且这些字问题会重复出现,就称这个问题拥有重叠子问题

一个问题必须有重叠子问题才能运用dp来解决

数塔问题

在这里插入图片描述

问最大和
此问题对于贪心算法(每一步局部最优解不正确)
思路:a的二维数组存储数塔的每一个数字

dp数组记录计算过程

重叠子结构,下一层计算与上一层直接联系,每一层的数字都是

最优子结构,本层只与上层有关,与上上层无关:上一层谁大就加谁

后无效性原则

在这里插入图片描述

状态转移方程

最大值只需要比较dpn就可

把数塔从居中对齐换位左对齐
从上至下推
在这里插入图片描述
从下至上推
最优子结构:
状态转移方程

在这里插入图片描述

如果一个问题的最优解

dp前提:重叠子问题和最优子结构与后无效性原则

最大连续子序列和

在这里插入图片描述

枚举n的三次方

符合重复子问题
最优子结构是什么

第二次课

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
稍微有点困惑,不过后来想明白了

需要求一个连续子序列,最终结果在ans和dp里面比较大小。dp是当前数值与前一个加上当前数值比较大小。我的担心是,如果8,9,-1,40这样。但是懂了,dp是最优选择,这里两个单独的ans,17与40

关于何时开始,何时结束
开始:ans大于0,设为start
结束:dp大于maxn时候记下???
dp同时记录end与ans

在这里插入图片描述

最大子矩阵

每一行都映射到一个b数组,就一行的话,等于最大子序和

两行的话,两行相加合并为一行的矩阵
2,23,234,2345都映射到b数字

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最长不下降子序列和

dp数组记录这个过程

前面没有比当前数字小,dp为1,接着2,3,4

在这里插入图片描述

在这里插入图片描述

最长公共子序列

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

拓展:最大公共子字符串是什么

在这里插入图片描述

硬币问题

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

01背包问题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值