动态规划表格法详细解析01背包问题

3.8 0-1背包问题(Knapsack problem)

前言:麻烦转载注明出处哦。

3.8.1 问题描述

其中每种物品只有1件,存放哪些物品,才能使背包存放物品价值最高?
在这里插入图片描述

3.8.2 算法思路

假设背包空间只有1kg、2kg…5kg,假设可装物品只有1种、2种…4种,按照这种思想,我们可以得出下面这张表。
在这里插入图片描述

要填写这张表,首先要知道每个空格之间的依赖关系。
以下图的最后一张表为例:当剩余空间为3kg,剩余商品为1号(2kg,12元)、2号 (1kg,10元),此时,我们有两种选择:

  • 第一种,选择不放入2号商品,这意味着剩余空间为3kg,剩余商品为1号(2kg,12元),则可以直接填入橙色那格的数值,即12;
  • 第二种,选择放入2号商品,这意味着剩余空间为1,剩余商品为1号(2kg,12元),这种情形对应着图中绿色的内容格,并且再将其加上2号商品的价格10元,10+12=22。

综上,比较两种方案的值,填入大的,即填入22。
在这里插入图片描述

按照这样的填法,我们填完了整张表,即下图。左下角的值37,即背包装入的最大价值。
在这里插入图片描述
现在要研究,怎么从这张表看出,应该放入哪些商品。
从最下角开始看:

  • 37不等于32,等于22+15,说明4号商品放入了,此时,剩余空间为3kg,剩余物品为1号(2kg,12元)、2号 (1kg,10元)、3号(3kg,20元),也就是第三行蓝色位置
  • 22等于22,说明3号商品不放入,此时,剩余空间为3kg,剩余物品为1号(2kg,12元)、2号 (1kg,10元),也就是第二行蓝色位置
  • 22不等于12,等于12+10,说明2号商品放入了,此时,剩余空间为2kg,剩余
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值