首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无界背包

无界背包
EN

Stack Overflow用户
提问于 2013-11-15 07:50:45
回答 1查看 1.9K关注 0票数 0

我需要为我的家庭作业修改wiki的背包伪码,这样它就可以检查你是否能在背包中达到精确的重量W。物品的数量是无限的,而你的价值并不重要。我正在考虑在j>-Wj下添加一个while循环,以检查它适合多少相同的项。那能行吗?

谢谢

代码语言:javascript
复制
// Input:
// Values (stored in array v)
// Weights (stored in array w)
// Number of distinct items (n)
// Knapsack capacity (W)
for w from 0 to W do
  m[0, w] := 0
end for 
for i from 1 to n do
  for j from 0 to W do
    if j >= w[i] then
      m[i, j] := max(m[i-1, j], m[i-1, j-w[i]] + v[i])
    else
      m[i, j] := m[i-1, j]
    end if
  end for
end for
EN

回答 1

Stack Overflow用户

发布于 2013-11-15 08:03:54

如果我没有遗漏任何东西,如果你指的是这篇维基文章

在修改后的版本中,values数组应该与w数组相同。计算m[n,W]后,只需检查它是否等于W

编辑:如果您有无限数量的项目,那么您正在处理的是无界背包问题。这是一个不同的问题,同一篇文章给出了解决这个问题的动态规划实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19996069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档