动态规划6个题目总结比较
对前面几道题目做一下总结。
问题 | 枚举 | 多阶段 | 限制条件 | 目标值 |
---|---|---|---|---|
0-1背包 | 每种物品:放/不放 | 每种物品一个阶段 | 不能超过总重量w | 放完索引物品后,总重量最大 |
双11 | 每种物品:买/不买 | 每种物品一个阶段 | w<=总价格<3w | 放完索引物品后,总价格是大于w的最小值 |
矩阵最短路径长度 | 每个位置移动的方向:向下/右 | 每个位置一个阶段 | 到达(n-1,n-1),最短路径长度 | |
最长递增子序列 | 每个元素是否在递增子序列中:加/不加 |
以第0个元素结尾; 以第1个元素结尾 … 以第n-1个元素结尾 |
考察完数组所有元素,选择长度最长的 | |
莱文斯坦编辑距离 | 当前比较的两个字符不相同时候的处理方式:添加/删除/替换 | 字符的位置:0,1,2… | 考察完数组所有字符,选择编辑距离最短的 | |
硬币找零 | 符合条件不同币值的硬币:第0种、第1种… | 支付1元、2元…w元 | 支付w元,最少硬币数量 |
问题 | 状态转移表维度 | 状态转移表值 | 状态转移方程 | 答案 |
---|---|---|---|---|
0-1背包 |
(i,cw) i:第i个物品 cw:当前总重量 |
true/false:能否达到那个重量 | state[n-1][j]=true,j最大 | |
双11 |
(i,presum) i:第i个物品 cw:当前总价格 |
true/false:能否达到那个价格 | state[n-1][j]=true,j>=w,且最小 | |
矩阵最短路径长度 |
(i,j) i:第i行 j:第j列 |
到达(i,j)的最短路径长度 | min_dist(i,j)=matrix[i][j]+min(min_dist(i-1,j-1),min_dist(i-1,j)) | min_dist(n-1,n-1) |
最长递增子序列 |
(i) i:以第i个元素结尾 |
以第i个元素结尾的最长递增子序列长度 |
max_lis(i)=max(max_lis(j))+1 j=0,1,2…i-1,a[i]>a[j] |
max_lis(i)的最大值,i=0,1,2…n-1 |
莱文斯坦编辑距离 |
(i,j) i:比较字符a[i] j:比较字符b[j] |
最少编辑次数 |
a[i]=b[j],min_edit=min(min_edist(i-1,j-1),min_edist(i-1,j)+1,min_edist(i,j-1)+1) a[i]!=b[j],min_edit=min(min_edist(i-1,j-1),min_edist(i-1,j),min_edist(i,j-1)+1)+1 |
min_edist(m-1,n-1) m:a字符串的长度,n:b字符串的长度 |
硬币找零 | (x) x:已选择硬币总和 | 最少硬币个数 |
F(i)=min(F(x-cic_ici))+1 i=0,1,2,…n-1,x-cic_ici>=0 |
F(w) |
根据表格回答以下问题。
1 目标状态与目标值是什么?
根据题目回答。
考察完所有物品;放入物品重量最大。
到达位置(n-1,n-1);最短路径长度。
考察完最后一个元素;最长递增子序列长度。
支付w元;最少应比数量。
两个字符串按位置,字符比较完成;最少编辑次数。
2 多阶段决策问题,按照什么分阶段?
按照目标状态分阶段。
考察完所有物品,最大重量。那就按照物品分阶段。
到达(n-1,n-1)时的最短路径长度,那就按照所在位置分阶段。
考察完数组最后一个元素后的最长递增子序列长度,那就按数组中每一个元素分阶段。
考察完所有物品后总价格最低,那就按照物品分阶段。
支付w元时的最少硬币数量,那就按照支付w-1、w-2…分阶段。
考察完两个字符串所有字符之后的最小编辑次数,那就按照字符位置分阶段。
3 状态表的维度和值是什么?
状态表的维度一般就是分阶段的维度。
按照物品分阶段,状态表维度是物品所在下标。
按照矩阵位置分阶段,状态表维度就是矩阵位置的横纵坐标。
按照支付多少元分阶段,状态表维度就是支付总额。
按照字符位置分阶段,状态表维度就是字符所在位置的下标。
特例:0-1背包问题,因为重量是限制条件,状态表维度是物品下标和重量。
状态表的值一般就是目标值。
目标值是最少编辑次数,状态表的值就是最少编辑次数。
目标值是硬币最少数量,状态表的值就是硬币最少数量。
特例:0-1背包问题,因为重量是限制条件,状态表的值true/false表示能不能达到某个重量。
4 状态转移方程是按照什么列出的?
状态转移方程是按照业务条件列出的。
按照前进方向
按照硬币币值
按照字符相同,不同时候的处理方式
动态规划6个题目总结比较相关推荐
- 动态规划:经典题目汇总
动态规划:经典题目汇总 文章目录 动态规划:经典题目汇总 一.动态规划的定义 二.经典例题 3.1 一维的DP:斐波那契数列.[使用最小花费爬楼梯](https://leetcode-cn.com/p ...
- 动态规划总结与题目分类
源博客链接:http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少 ...
- Leetcode动态规划部分典型题目分类及总结
参考内容 https://leetcode-cn.com/problems/longest-palindromic-substring/solution/zhong-xin-kuo-san-dong- ...
- 动态规划DP经典题目Java版本
动态规划经典题目汇总(多点赞关注哦) (1)最长公共子序列: package 动态规划;import java.util.Scanner;/*** abcdebcde4* @author Admini ...
- 动态规划经典入门级题目*2及详解
题目来自极客学院的视频教程-动态规划(一) 一句话解释动态规划:多阶段最优化决策解决问题的过程 解题技巧:只关注状态转移(子问题之间的关系),不要考虑某个状态是怎么出现的 1.字符串解码 一个只包含大 ...
- 动态规划(练习题目)
故事开始以前 最初的那些春天 阳光洒在杨树上 风吹来 闪银光 街道平静而温暖 钟走得好慢 那是我还不识人生之味的年代 我情窦还不开 你的衬衣如雪 盼着杨树叶落下 眼睛不眨 心里像有一些话 我们先不讲 ...
- LeetCode 动态规划(Dynamic programming)系列题目--C++,Python解法
LeetCode上有许多态规划(Dynamic programming)的题目,我在这里整合一下 本文章不再更新,请看LeetCode 所有题目总结 LeetCode 所有题目总结:LeetCode ...
- 牛客网练习赛7--购物 动态规划
题意: 在遥远的东方,有一家糖果专卖店. 这家糖果店将会在每天出售一些糖果,它每天都会生产出m个糖果,第i天的第j个糖果价格为C[i][j]元. 现在的你想要在接下来的n天去糖果店进行选购,你每天可以 ...
- 动态数组怎么定义_动态规划最长回文子序列
动态规划|最长回文子序列 今天一起来学习Leetcode第 516 题:最长回文子序列. 题目描述 题目分析 首先回文字符串指的是形如"a","aa",''ab ...
最新文章
- 推荐一个比吴恩达还优质的机器学习课程
- stm32显示flash下载失败_STM32大神笔记,超详细单片机学习汇总资料(干货分享4)...
- vue ui无效_vue开发中,父组件添加scoped之后。解决在父组件中无法修改子组件样式问题。...
- Spark-1.6.0之Application运行信息记录器JobProgressListener
- HDU Problem - 6383 p1m2(二分)
- 中断方式下进行串口通讯的正确方法
- java自定义注解学习笔记
- 鱼骨图分析法实际案例_会用“鱼骨图”的项目经理无难题
- Java-ArrayList使用技巧---从第一个List中去除所有第二个List中与之重复的元素
- pcs7 simatic batch v9.0_西门子V90 伺服STO安全功能注意事项
- 敏捷开发系列学习总结(12)——给Scrum Master的十个建议,你值得拥有
- caffe的调试技巧 和 使用split层
- LeetCode 144. 二叉树的前序遍历(递归)(迭代)(颜色标记法)
- CSR8615蓝牙芯片功能调试入门笔记------ 下
- python123 测验6:组合数据类型
- win10便签如何卸载?win10便签卸载和安装方法
- python运行部分代码
- QDU首届易途杯大赛-kk与cillyb的荣誉之战
- 彻底解决联想手机数据连接不能上网问题(无需恢复出厂设置) 本文来自移动叔叔论坛 ,详细出处请参考:http://bbs.ydss.cn/thread-201115-1-1.html
- OpenStack之Nova分析——Nova API服务
热门文章
- android开机自动打开微信小程序,Android APP拉起小程序界面 (微信未启动 打不开)...
- gesturedetector.java_我的flutter代码中的GestureDetector不起作用
- python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝)
- Mysql:替换某个字段中的部分字符串——replace函数
- 华强北二代悦虎1562M升级固件图文教程(详细多图文)
- 基于Docker方式实现Elasticsearch集群
- Android 获取地理位置获取经纬度
- Thread类的有关方法以及优先级
- jqprint控件使用
- java 静态代码块和spring @value注解注入执行顺序