经过这几天的练习真的感觉DP很难,做题根本没有做贪心时候的感觉,就感觉很干,没有思路,一些很简单的题也做不出来,就简单的罗列一下DP知识点吧
动态规划是解决多阶段决策问题的一种方法。
多阶段决策问题:如果一类问题的求解过程可以分为若干个互相联系的阶段,在每一个阶段都需作出决策,并影响到下一个阶段的决策。
多阶段决策问题,就是要在可以选择的那些策略中间,选取一个最优策略,使在预定的标准下达到最好的效果.
不论初始状态和第一步决策是什么,余下的决策相对于前一次决策所产生的新状态,构成一个最优决策序列。
最优决策序列的子序列,一定是局部最优决策子序列。
包含有非局部最优的决策子序列,一定不是最优决策序列。
在做每一步决策时,列出各种可能的局部解
依据某种判定条件,舍弃那些肯定不能得到最优解的局部解。
以每一步都是最优的来保证全局是最优的。
DP最经典的问题就是将一个问题转换成动态转移方程的形式,用数学公式描述与阶段相关的状态间的演变规律。
解题过程:
1、判断问题是否具有最优子结构性质,若不具备则不能用动态规划。
2、把问题分成若干个子问题(分阶段)。
3、建立状态转移方程(递推公式)。
4、找出边界条件。
5、将已知边界值带入方程。
6、递推求解。
现在的DP类型就大多数是数字求和选最大最小问题,最长上升子序列,最长下降子序列等。
经典DP感觉比STL还难受,STL是不会用DP就是完全没思路,或者是思路很模糊。总之,学好C++就是将我们保住我们的饭碗吧,加油,打气。
经典DP分析
最新推荐文章于 2023-07-06 21:19:03 发布