Algorithm 无界背包伪码
我需要为我的作业修改wiki的背包伪代码,以便它检查你是否能在背包中获得确切的重量W。项目数量是无限的,您可以选择不重要的值。我正在考虑在j>-W[j]下添加一个while循环,以检查它适合多少相同的项目。这样行吗 谢谢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
// 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循环的想法行得通吗?是的,我看到了,但是我的正式英语很差,我没有得到文章想要我做的。如果您能详细说明,我将不胜感激