动态算法规划算法背包问题

本文通过一个实例详细解析了动态规划解决01背包问题的思路和过程,包括问题描述、二维表格的构建和填充,并给出了Java实现的代码片段。讨论了如何优化空间复杂度,以及如何调整为恰好装满和完全背包问题的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

01背包:

问题描述:

现在有4个货物,表示成数值对的形式(重量w,价值v)分别为(2,3);(1,2);(3,4);(2,2)

如果现在有一个人只能拿得动质量为5的东西,怎么选择可以在能力范围内拿到最大价值的货物。


问题解析:

绘制一个2D表格,横向表示能力值上限(最大重量总和),纵向向下依次取第0,1,2,3,4件货物,经过决策后的最优结果dq记录在表格中:

1、易知,无论是最大重量还是货物为0时,最后的价值只能是0,即表格的第一行和第一列都是0;

2、从第一件货物开始,假设最大重量变为1,对第一件货物(2,3)而言,还是无能为力,因此价值为0;

 假设最大重量变为2,对第一件货物(2,3)而言,可以取走,价值变为3;

 假设最大重量变为3,4,5,对第一件货物(2,3)而言,都可以取走,价值变为3;

则得到第一列,若果只有第一件货物能决策到的最优情况表。


3、接下来判断第二件货物:

      假设最大重量变为1,对第二件货物(1,2)而言,可以尝试;如果决定取走

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值