概述
这节是总结和类比,如果看着比较笼统,请先自己编码实现完全背包和01背包代码,参考:
算法.动态规划.完全背包问题 (Java,递归)_要钱也要自我实现-CSDN博客01背包问题 钱币最少https://blog.csdn.net/weixin_42754896/article/details/123068850?spm=1001.2014.3001.5501算法.动态规划.完全背包问题 (Java,递归)_要钱也要自我实现-CSDN博客01背包问题 钱币最少https://blog.csdn.net/weixin_42754896/article/details/123068850?spm=1001.2014.3001.5501
什么是背包问题
有这么一个包包,要装最大价值的东西,重量需要在包包的承受范围内
动态规划
动态规划是解决背包问题的思路: F(n) = F(n-1) + K
第一步有N中选择,遍历这N中选择,选一个最优的解
类比
东西编号 : D1 D2 D3 D4
体积W : 2 3 4 5
价值V : 3 4 5 6
东西个数:
完全背包: ∞ ∞ ∞ ∞
01背包 : 1 1 1 1
多重背包: n1 n2 n3 n4
多维背包: W1 W2 W3 W4 (重量,体积+重量限制)
恰好装满: 最后剩余体积必须 =0 才可以
背包体积W:8
1. 01背包/多重背包 = 完全背包 + 东西个数限制
2. 多维背包: 多维控制条件,比如:体积,重量 同时限制 背包可以拿多少东西。
3. 多重背包 = N * D1 可以化解为 :01背包=D1 D1 D1 …… (N个)
4. 恰好装满: 体积最后需要剩余为0才可以,这种也可以在凑钱中限制,凑100块就必须凑够,否则少给你你也不干呀。
实现对比
1. 最容易理解的实现是 迭代
2. 如果东西太多迭代代价太大, 可以转为循环实现,但思想不变
参考文档
动态规划之背包问题系列 - 知乎
【算法总结】动态规划-背包问题 - 郭怡柔 - 博客园
什么是动态规划(Dynamic Programming)?动态规划的意义是什么? - 知乎
最后
以上就是敏感音响为你收集整理的算法.动态规划.背包问题(完全背包,01背包,多重背包,多维背包,刚好装满)什么是背包问题动态规划类比实现对比的全部内容,希望文章能够帮你解决算法.动态规划.背包问题(完全背包,01背包,多重背包,多维背包,刚好装满)什么是背包问题动态规划类比实现对比所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复