赞
踩
动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。
适用场景
最优化原理:假设问题的最优解所包括的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优化原理。
无后效性:即某阶段状态一旦确定。就不受这个状态以后决策的影响。也就是说,某状态以后的过程不会影响曾经的状态。仅仅与当前状态有关。
有重叠子问题:即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到(该性质并非动态规划适用的必要条件,可是假设没有这条性质。动态规划算法同其它算法相比就不具备优势)。
一,状态定义。 二,转移方程 。 三,初始状态。 四,填表顺序。 五,返回值。
通过dp[i-1]更新dp[i]就可以转成连续空间。
每个区间非空,且任何元素都属且属于一个区间或不属于任何区间 |
---|
【动态规划】【离线查询】【前缀和】689. 三个无重叠子数组的最大和 |
求极值 |
【动态规划】【前缀和】【和式变换】100216. K 个不相交子数组的最大能量值 |
求方案数 |
【动态规划】【字符串】【前缀和】1639通过给定词典构造目标字符串的方案数 |
【动态规划】C++算法:115.不同的子序列 |
每个区间非空,一个元素可以属于1个或更多区间 |
---|
避免重复搜索,往往可以忽略许多不存在的状态 |
---|
【动态规划】【记忆化搜索】C++算法:546移除盒子 |
【动态规划】【记忆化搜索】【C++算法】664. 奇怪的打印机 |
【数学】【记忆化搜索 】【动态规划】964. 表示数字的最少运算符 |
【记忆化搜索】【剪枝】【C++算法】1553吃掉 N 个橘子的最少天数 |
dp[i][j] 表示 处理完nums[0,i),状态为j的值(最小值、最大值、数量)
有效学习:明确的目标 及时的反馈 拉伸区(难度合适),可以先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快
速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176
下载
想高屋建瓴的学习算法,请下载《喜缺全书算法册》doc版
https://download.csdn.net/download/he_zhidan/88348653
我想对大家说的话 |
---|
闻缺陷则喜是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。 |
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。 |
如果程序是一条龙,那算法就是他的是睛 |
操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。