摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=2602分析:一个0-1背包问题。记得《背包九讲》的方法。dp[j]=max{dp[j],dp[j-volume[i]]+value[i]}#include#includeint main(){ int num,c,n,value[1000],volume[1000],dp[1000]; scanf("%d"... 阅读全文
posted @ 2014-01-20 11:17 做个假设 阅读(147) 评论(0) 推荐(0)
摘要: 问题描述已知n个物品和一个背包容量为C,物品i(i=1,2,3,......)的容量为c[i] 价值w[i]。物品i可以装入,也可以不装入,但是不可以拆分。如何设计装包使得装包总效益最大。动态规划逆推求解设dp[i,j]为背包容量j,可取物品的范围为i,i+1,i+2,......n的最大效益值。即这是从后往前作为递推的方向。也就是思考怎么从i+1这个状态转移到i的状态无非是放入和不放两种情况。这... 阅读全文
posted @ 2014-01-20 11:11 做个假设 阅读(183) 评论(0) 推荐(0)
摘要: 在学习《背包九讲》的时候总结的一点。最基础的三种背包问题:(1)01背包(ZeroOnePack):有N件物品和一个容量为V的背包,每一种物品只有一件。 第i件物品的费用是c[i],价值是w[i]。求解放入哪些物品是的总价值和最大。(2)完全背包(CompletePack):有N件物品和一个容量为V的背包,每一种物品有无限件。 第i件物品的费用是c[i],价值是w[... 阅读全文
posted @ 2014-01-20 11:10 做个假设 阅读(184) 评论(0) 推荐(0)
摘要: 问题描述有N中物品和一个容量为V的背包,每种物品都有无限件可以使用。第i中物品的费用是c[i],价值是w[i]。求将哪些物品放入背包可以使这些物品的费用总和不超过背包容量且价值总和最大。分析思路每个物品都是无限件,也就当取第i件物品的时候,有0件、1件、2件。。。。等等多种情况。令f[i,v]表示前i种物品放入一个容量为v的背包时候 取得的最大价值。动态转移方程为: dp[i,v]=max... 阅读全文
posted @ 2014-01-20 11:09 做个假设 阅读(590) 评论(0) 推荐(0)