标签:
问题描述:
N件物品和容量为V的背包;每种物品均只有一件,且第i件物品重量为weight[i],价值为value[i]。求将哪些物品放入背包可使物品重量总和不超过背包容量,且价值总和达到最大?
解题思路:
首先定义问题状态,DP[i][V]表示前i件物品放入容量为V的背包所能获得的最大值(以下分析都如此)。
若只考虑第i件物品的放入策略,即放入或不放入两种情况,问题就可转化为一个只涉及前i-1件物品的问题,得状态转移方程:
DP[i][V] = max{ DP[i-1][V], DP[i-1][V-weight[i]] + value[i] }
空间复杂度优化:
问题描述:
N件物品和容量为V的背包;每件物品无限可用,且第i件物品重量为weight[i],价值为value[i]。求将哪些物品放入背包可使物品重量总和不超过背包容量,且价值总和达到最大?
解题思路:
按照分析01背包思路,同样根据每件物品的放入策略,有很多种情况(不是无限种,有 0 <= k*value[i] <= V 约束条件),可得状态转移方程:
DP[i][V] = max{ DP[i-1][V], DP[i-1][V-k*weight[i]] + k*value[i] }
空间复杂度优化:
问题描述:
N件物品和容量为V的背包;第i件最多有count[i]件可用,且第i件物品重量为weight[i],价值为value[i]。求将哪些物品放入背包可使物品重量总和不超过背包容量,且价值总和达到最大?
解题思路:
标签:
原文地址:http://www.cnblogs.com/1203ljh/p/4624652.html