动态规划1——0-1背包问题

本文介绍了经典的0-1背包问题,探讨每件物品只能取一次的情况下的最大价值计算。通过创建二维表格,利用动态规划的局部最优解思想,降低时间复杂度从O(2^n)到O(n*m),并给出Java代码实现。
摘要由CSDN通过智能技术生成

经典背包问题:

现有n件物品和一个容量为c的背包。第i件物品的重量是重量为w[i],价值是v[i]。已知对于一件物品必须选择取(用1表示)或者不取(用0表示),且每件物品只能被取一次(这就是“0-1”的含义)。求放置哪些物品进背包,可使这些物品的重量总和不超过背包容量,且价值总和最大。

这道题目的重点就是,每件物品只能被取一次,也就是说,每件物品,只有取或者不取两种情况。如果换一种情况,每一种物品可以取不止一次,那么题目的复杂程度将会大大增加。

按照每件物品取或不取这样的算法来计算,按照简单的排列组合,n件物品,那么需要的时间复杂度为O(2^{n}),随着N的增大,时间复杂度呈指数级增加。

我们假设一种情况,一共有六种物品,讲它们的重量和价值按照(重量,价值)的方式罗列,分别是{(2,6),(2,3),(3,4),(4,5),(4,3),(5,7)},同时背包的最大容量为10,我们可以按照背包的最大容量和物品数量,创建一张10x6的表格

(重量,价格) 0 1 2 3 4 5 6 7 8 9 10
(2,6)                      
(2,3)                      
(3,4)                      
(4,5)                      
(4,3)                      
(5,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值