对前面几道题目做一下总结。

问题 枚举 多阶段 限制条件 目标值
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个题目总结比较相关推荐

  1. 动态规划:经典题目汇总

    动态规划:经典题目汇总 文章目录 动态规划:经典题目汇总 一.动态规划的定义 二.经典例题 3.1 一维的DP:斐波那契数列.[使用最小花费爬楼梯](https://leetcode-cn.com/p ...

  2. 动态规划总结与题目分类

    源博客链接:http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少 ...

  3. Leetcode动态规划部分典型题目分类及总结

    参考内容 https://leetcode-cn.com/problems/longest-palindromic-substring/solution/zhong-xin-kuo-san-dong- ...

  4. 动态规划DP经典题目Java版本

    动态规划经典题目汇总(多点赞关注哦) (1)最长公共子序列: package 动态规划;import java.util.Scanner;/*** abcdebcde4* @author Admini ...

  5. 动态规划经典入门级题目*2及详解

    题目来自极客学院的视频教程-动态规划(一) 一句话解释动态规划:多阶段最优化决策解决问题的过程 解题技巧:只关注状态转移(子问题之间的关系),不要考虑某个状态是怎么出现的 1.字符串解码 一个只包含大 ...

  6. 动态规划(练习题目)

    故事开始以前 最初的那些春天 阳光洒在杨树上 风吹来 闪银光 街道平静而温暖 钟走得好慢 那是我还不识人生之味的年代 我情窦还不开 你的衬衣如雪 盼着杨树叶落下 眼睛不眨 心里像有一些话 我们先不讲 ...

  7. LeetCode 动态规划(Dynamic programming)系列题目--C++,Python解法

    LeetCode上有许多态规划(Dynamic programming)的题目,我在这里整合一下 本文章不再更新,请看LeetCode 所有题目总结 LeetCode 所有题目总结:LeetCode ...

  8. 牛客网练习赛7--购物 动态规划

    题意: 在遥远的东方,有一家糖果专卖店. 这家糖果店将会在每天出售一些糖果,它每天都会生产出m个糖果,第i天的第j个糖果价格为C[i][j]元. 现在的你想要在接下来的n天去糖果店进行选购,你每天可以 ...

  9. 动态数组怎么定义_动态规划最长回文子序列

    动态规划|最长回文子序列 今天一起来学习Leetcode第 516 题:最长回文子序列. 题目描述 题目分析 首先回文字符串指的是形如"a","aa",''ab ...

最新文章

  1. 推荐一个比吴恩达还优质的机器学习课程
  2. stm32显示flash下载失败_STM32大神笔记,超详细单片机学习汇总资料(干货分享4)...
  3. vue ui无效_vue开发中,父组件添加scoped之后。解决在父组件中无法修改子组件样式问题。...
  4. Spark-1.6.0之Application运行信息记录器JobProgressListener
  5. HDU Problem - 6383 p1m2(二分)
  6. 中断方式下进行串口通讯的正确方法
  7. java自定义注解学习笔记
  8. 鱼骨图分析法实际案例_会用“鱼骨图”的项目经理无难题
  9. Java-ArrayList使用技巧---从第一个List中去除所有第二个List中与之重复的元素
  10. pcs7 simatic batch v9.0_西门子V90 伺服STO安全功能注意事项
  11. 敏捷开发系列学习总结(12)——给Scrum Master的十个建议,你值得拥有
  12. caffe的调试技巧 和 使用split层
  13. LeetCode 144. 二叉树的前序遍历(递归)(迭代)(颜色标记法)
  14. CSR8615蓝牙芯片功能调试入门笔记------ 下
  15. python123 测验6:组合数据类型
  16. win10便签如何卸载?win10便签卸载和安装方法
  17. python运行部分代码
  18. QDU首届易途杯大赛-kk与cillyb的荣誉之战
  19. 彻底解决联想手机数据连接不能上网问题(无需恢复出厂设置) 本文来自移动叔叔论坛 ,详细出处请参考:http://bbs.ydss.cn/thread-201115-1-1.html
  20. OpenStack之Nova分析——Nova API服务

热门文章

  1. android开机自动打开微信小程序,Android APP拉起小程序界面 (微信未启动 打不开)...
  2. gesturedetector.java_我的flutter代码中的GestureDetector不起作用
  3. python3下使用requests实现模拟用户登录 —— 基础篇(马蜂窝)
  4. Mysql:替换某个字段中的部分字符串——replace函数
  5. 华强北二代悦虎1562M升级固件图文教程(详细多图文)
  6. 基于Docker方式实现Elasticsearch集群
  7. Android 获取地理位置获取经纬度
  8. Thread类的有关方法以及优先级
  9. jqprint控件使用
  10. java 静态代码块和spring @value注解注入执行顺序