![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划
文章平均质量分 90
动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。
_L.Y.H._
人生就像复杂的无向图,我们虽然不能找到最短路,但是我们能不断搜索。
展开
-
噩梦中的仙境:动态规划之区间一维
区间动态规划基本 思考 步骤(划重点)这部分,与网上其他的文章都不同,绝对通俗易懂(有点自信)1.理解题目2.定义dp[i]或dp[i][j]表示的是什么(通常为 题目要求的东西 的 局部最优解)3.用递归(暴力)的思想分析每一步该怎么做4.再就递归的思想,确认dp[i]或dp[i][j] 如何得到,由何得到5.由上得到动态转移方程,并验证6.思考代码如何实现(考虑细节、输入输出等)原创 2023-01-30 11:34:46 · 402 阅读 · 30 评论 -
噩梦的开始:动态规划之背包问题(01背包问题、完全背包问题、方案数填满型背包问题)
背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。相似问题经常出现在商业、组合数学,计算复杂性理论、密码学和应用数学等领域中。也可以将背包问题描述为决定性问题,即在总重量不超过W的前提下,总价值是否能达到V?它是在1978年由Merkle和Hellman提出的。常见分类:01背包完全背包多重背包。原创 2023-01-20 11:15:44 · 2274 阅读 · 20 评论 -
买卖股票的最佳时机 IV
需要注意的是,\textit{sell}[i][j]sell[i][j] 的状态转移方程中包含 \textit{buy}[i-1][j-1]buy[i−1][j−1],在 j=0j=0 时其表示不合法的状态,因此在 j=0j=0 时,我们无需对 \textit{sell}[i][j]sell[i][j] 进行转移,让其保持值为 00 即可。为什么 s[j]s[j] 的状态转移方程中会出现 \textit{sell}[i-1][j-1]sell[i−1][j−1] 这一项?原创 2023-12-10 16:45:58 · 265 阅读 · 1 评论 -
从01背包说起(下)
(初学者读本文必看!!!)上次(上面链接)讲到,01背包的一种做法——二维数组法。这种方法有一个巨大的缺陷:没必要的空间使用过多。因此,有了一种优化做法,原创 2022-11-30 11:17:35 · 381 阅读 · 0 评论 -
从01背包说起(上)
动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。核心思想: 通过将问题拆分成一个一个小问题,记录过往结果,减少重复运算。举个栗子:"A : "上面等式的值是多少"B : 计算 "8"A : 在上面等式的左边写上 "1+" 呢?A : "此时等式的值为多少"原创 2022-11-26 11:03:04 · 584 阅读 · 2 评论 -
【最优方案】合唱队形
1126. 合唱队形(File IO):input:chorus.inoutput:chorus.out时间限制:1000 ms空间限制:262144 KB具体限制Goto ProblemSet题目描述N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<...<Ti>Ti+1>.........原创 2022-05-04 16:56:35 · 1216 阅读 · 0 评论