如何用动态规划解决无限背包问题?

baodepei1981 2002-10-12 07:31:41
设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为XK,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于XK,而价值的和为最大。
这道背包问题如何用动态规划的方式解??请高手指教,源代码及使用动态规划的原理!
...全文
291 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pebbleshx2002 2002-11-10
  • 打赏
  • 举报
回复
背包问题,用interger programming -- branch and bound
LeeMaRS 2002-10-12
  • 打赏
  • 举报
回复
有一个负重能力为m的背包和n件物品, 第i种物品的价值为v[i], 重量为w[i].
对于一个负重能力为m的背包, 如果我们选择装入第i种物品, 那么原背包问题就转化为m-w[i]的子背包问题. 原背包问题的最优值包含这个子背包问题的最优值.若我们用背包的负重能力来划分状态, 令状态变量s[k]表示负重能力为k的背包和n种物品的背包问题中选择物品价值之和的最大值, 那么s[m]值只取决于s[k](k<=m). 因此具有最优子结构.

状态转移方程为:
max{ s[k - w[i]] + v[i] } (其中1<=i<=n, 且k-w[i]>=0)
s[k]=
0 (否则)
renwanly 2002-10-12
  • 打赏
  • 举报
回复
关注

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧