当前位置:网站首页>动态规划总括
动态规划总括
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 Expert Programming Chapter 4 The Shocking Fact: Arrays and Pointers Are Not the Same 4.3 What is a Declaration and What is a Definition
- 8款最佳实践,保护你的 IaC 安全!
- [Cloud Native--Kubernetes] Pod Resource Management and Probe Detection
- Tactile intelligent sharing - SSD20X realizes upgrade display progress bar
- 应届生软件测试薪资大概多少?
- 使用Patroni回调脚本绑定VIP的坑
- The 2022 PMP exam has been delayed, should we be happy or worried?
- 小程序 + 电商,玩转新零售
- C专家编程 第4章 令人震惊的事实:数组和指针并不相同 4.5 数组和指针的其他区别
- 编程大杂烩(四)
猜你喜欢
[C language advanced] program environment and preprocessing
如何将 DevSecOps 引入企业?
idea设置识别.sql文件类型以及其他文件类型
[Evaluation model] Topsis method (pros and cons distance method)
数的划分之动态规划
看DevExpress丰富图表样式,如何为基金公司业务创新赋能
How to keep the source code confidential in the development under the burning scenario
Performance testing with Loadrunner
Programming hodgepodge (4)
编程大杂烩(三)
随机推荐
高性能高可靠性高扩展性分布式防火墙架构
Dynamic programming of the division of numbers
编程大杂烩(四)
应届生软件测试薪资大概多少?
心余力绌:企业面临的软件供应链安全困境
Chapter 5 C programming expert thinking 5.4 alert Interpositioning of links
Jenkins export and import Job Pipeline
使用Patroni回调脚本绑定VIP的坑
10 Convolutional Neural Networks for Deep Learning 3
Turn: Management is the love of possibility, and managers must have the courage to break into the unknown
C Expert Programming Chapter 4 The Shocking Fact: Arrays and Pointers Are Not the Same 4.5 Other Differences Between Arrays and Pointers
8大软件供应链攻击事件概述
Gartner 权威预测未来4年网络安全的8大发展趋势
BFC、IFC、GFC、FFC概念理解、布局规则、形成方法、用处浅析
Tactile intelligent sharing - SSD20X realizes upgrade display progress bar
转:管理是对可能性的热爱,管理者要有闯进未知的勇气
DataTable uses Linq for grouping and summarization, and converts the Linq result set into DataTable
QT 如何识别文件的编码格式
【21天学习挑战赛】直接插入排序
21 days learning challenge 】 【 sequential search