当前位置:网站首页>动态规划总括
动态规划总括
2022-08-04 05:14:00 【empty__barrel】
如果某一问题有很多重叠子问题,使用动态规划是最有效的。
所以动态规划中每一个状态一定是由上一个状态推导出来的由此来判断是否使用动态规划
动规是由前一个状态推导出来的,而贪心是局部直接选最优的
动态规划中dp[j]是由dp[j-weight[i]]推导出来的,然后取max(dp[j], dp[j - weight[i]] + value[i])。
但如果是贪心呢,每次拿物品选一个最大的或者最小的就完事了,和上一个状态没有关系。
对于动态规划问题,我将拆解为如下五步曲:
- 确定dp数组(dp table)以及下标的含义
- 确定递推公式
- dp数组如何初始化
- 确定遍历顺序
- 举例推导dp数组
动态规划应该如何debug:
找问题的最好方式就是把dp数组打印出来,看看是不是和自己预先推导的哪里不一样。
如果打印出来和自己预先模拟推导是一样的,那么就是自己的递归公式、初始化或者遍历顺序有问题了。
如果和自己预先模拟推导的不一样,那么就是代码实现细节有问题。
解题:
首先思考这是一个动态规划的题目,那么当前值是由前面的值表示出来的,怎么表示呢?不清楚。此时就应该通过答案反推过程同时在此过程中要始终记得当前值是可以由前面的值表示的。
dp[ n ] = 某某+dp[ i ]
dp[ i] = 某某+dp[ i] +/-/*/÷ dp[ j ]
边栏推荐
- C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.5 数组和指针的其他区别
- 商城App开发都有哪些功能呢
- [Evaluation model] Topsis method (pros and cons distance method)
- Structure function exercise
- C Expert Programming Chapter 4 The Shocking Fact: Arrays and Pointers Are Not the Same 4.5 Other Differences Between Arrays and Pointers
- System design. Seckill system
- 3000字,一文带你搞懂机器学习!
- Hangdian Multi-School-Slipper- (tree map conversion + virtual point mapping)
- 少年成就黑客,需要这些技能
- Basic characteristics of TL431 and oscillator circuit
猜你喜欢
随机推荐
Programming hodgepodge (4)
结构体函数练习
What are the steps for how to develop a mall system APP?
深度学习环境配置
渗透测试(PenTest)基础指南
[Evaluation model] Topsis method (pros and cons distance method)
el-Select selector bottom fixed
基于gRPC编写golang简单C2远控
Chapter 5 C programming expert thinking 5.4 alert Interpositioning of links
OpenGL绘制一个圆锥
心余力绌:企业面临的软件供应链安全困境
The idea setting recognizes the .sql file type and other file types
System design. How to design a spike system (full version transfer)
C Expert Programming Chapter 5 Thinking about Linking 5.2 Advantages of Dynamic Linking
System design. Seckill system
Performance testing with Loadrunner
企业需要知道的5个 IAM 最佳实践
C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.4 使声明与定义相匹配
C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.1 数组并非指针
Gartner 权威预测未来4年网络安全的8大发展趋势





![[Cocos 3.5.2]开启模型合批](/img/d9/9e8f71c9a26c8052b11291fe3ba7ac.png)



