目录
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]);