码迷,mamicode.com
首页 > 其他好文 > 详细

背包问题

时间:2015-07-06 17:24:24      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:

0-1背包

问题描述:

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] }

空间复杂度优化:

 

d完全背包

问题描述:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!