我是靠谱客的博主 敏感音响,最近开发中收集的这篇文章主要介绍算法.动态规划.背包问题(完全背包,01背包,多重背包,多维背包,刚好装满)什么是背包问题动态规划类比实现对比,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这节是总结和类比,如果看着比较笼统,请先自己编码实现完全背包和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背包,多重背包,多维背包,刚好装满)什么是背包问题动态规划类比实现对比所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部