01背包问题+例题

目录

QUESTION:

解法:

二维数组:时间复杂度和空间复杂度都是O(n*V)

一维数组:时间复杂度O(n*V),空间复杂度O(V)

例题:

ac代码:


QUESTION:


有n件物品(每种物品都只有一件),w[i]表示物品的重量,v[i]表示物品的价值,现有一个容量为V的背包,应该如何选物品使得书包内装的物品的value之和最大呢?

 

解法:


二维数组:时间复杂度和空间复杂度都是O(n*V)

对于第i个物品,有选和不选两种情况

dp[i][j]表示在容量为j的情况下选取i个物品的最大value值

核心代码:

for(i=0;i<n;i++)
    for(j=V;j>=w[i];j--)
        dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);

一维数组:时间复杂度O(n*V),空间复杂度O(V)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值