动态规划篇
动态规划解决问题比较多,每个问题单独说明
pyorz
python 爱好者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划-05-前缀和
一、简介原创 2020-10-16 09:10:37 · 363 阅读 · 0 评论 -
动态规划-04-区间动态规划
一、简介区间动态规划简介区间 DP 是状态的定义和转移都与区间有关,其中区间用两个端点表示。状态定义 dp[i][j] = [i…j] 上原问题的解。i 变大,j 变小都可以得到更小规模的子问题。对于单串上的问题,我们可以对比一下线性动态规划和区间动态规划。线性动态规划, 一般是定义 dp[i], 表示考虑到前 i 个元素,原问题的解,i 变小即得到更小规模的子问题,推导状态时候是从前往后,即 i 从小到大推的。区间动态规划,一般是定义 dp[i][j],表示考虑 [i…j] 范围内的元素,原问题的原创 2020-10-15 10:18:41 · 540 阅读 · 0 评论 -
动态规划-03-线性动态规划
一、简介线性动态规划的主要特点是状态的推导是按照问题规模 i 从小到大依次推过去的,较大规模的问题的解依赖较小规模的问题的解。这里问题规模为 i 的含义是考虑前 i 个元素 [0…i] 时问题的解。状态定义:dp[n] = [0…n] 上问题的解状态转移:dp[n] = f(dp[n-1], …, dp[0])从以上状态定义和状态转移可以看出,大规模问题的状态只与较小规模的问题有关,而问题规模完全用一个变量 i 表示,i 的大小表示了问题规模的大小,因此从小到大推 i 直至推到 n,就得到了大原创 2020-10-15 10:18:01 · 1335 阅读 · 1 评论 -
动态规划-02-背包问题
动态规划-分类0-1 背包问题原创 2020-10-15 10:16:30 · 236 阅读 · 0 评论 -
动态规划-01-思维过程
动态规划思路整理:首先,动态规划问题的一般形式就是【求最值】。比如求最长递增子序列呀,最小编辑距离等。既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是【穷举】。因为要求最值,肯定要把所有可行的答案穷举出来,然后在其中找最值。动态规划的穷举有点特别,因为这类问题存在【重叠子问题】,如果暴力穷举的话效率会极其低下,所以需要【备忘录】或者【DP table】来优化穷举过程,避免不必要的计算。确定【最优子结构】,列出【状态转移方程】考虑能否将问题规模减小,思考如何由较小规模问题的解获得最终原创 2020-10-15 10:12:57 · 343 阅读 · 0 评论
分享