水博客之LC背包

讲一下背包问题里最简单的LC背包。
有n种物品,每种物品只有一件,每种物品都有他的价值和体积,你有一个体积为v的背包,要在装得下的前提下装价值最多的东西,请你求出这个最大的价值。
f[i][v]表示前i个物品放进体积为v的背包里的最优值。
对于第i件物品要么被放进背包,要么放。
如果不放,前i件物品放进v的背包的最优值就等于前i-1件物品放进v的背包里的最优值。
如果放,前i件物品放进v的背包的最优值就等于前i-1件物品放进体积为v-w[i](Wi是第i个物品的体积)的背包的最优值加上第i件物品的价值。
so
LC背包的方程
这里写图片描述
这是二维的写法。
因为第i层的状态只和i-1层有关,所以我们可以省掉第一维。
但是如果这样v要从大到小枚举,因为如果从小到大的话,你在算第i层用到第i-1层时,第i=-1层可能已经被更新过了。简而言之就是一个物品可能会被假如背包很多次,但题目明确指出一个物品只有一个。
LC一维数组的方程
这里写图片描述
OlccK!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值