Algorithm 无界背包伪码

Algorithm 无界背包伪码,algorithm,pseudocode,Algorithm,Pseudocode,我需要为我的作业修改wiki的背包伪代码,以便它检查你是否能在背包中获得确切的重量W。项目数量是无限的,您可以选择不重要的值。我正在考虑在j>-W[j]下添加一个while循环,以检查它适合多少相同的项目。这样行吗 谢谢 // Input: // Values (stored in array v) // Weights (stored in array w) // Number of distinct items (n) // Knapsack capacity (W) for w from

我需要为我的作业修改wiki的背包伪代码,以便它检查你是否能在背包中获得确切的重量W。项目数量是无限的,您可以选择不重要的值。我正在考虑在j>-W[j]下添加一个while循环,以检查它适合多少相同的项目。这样行吗

谢谢

// 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

如果我没有遗漏什么,如果你指的是

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

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

是的,那篇文章。那么,如何计算无限项目?我增加一个while循环的想法行得通吗?是的,我看到了,但是我的正式英语很差,我没有得到文章想要我做的。如果您能详细说明,我将不胜感激