您好我正在尝试找到我必须在此问题中使用的数据结构算法。我有两个数组,一个包含产品权重,另一个包含成本。我必须将产品重量划分为每个包装中具有相同重量的最佳包装数量,并且在分割后每个包装的单个产品或总产品成本不应超过300美元。
Ex:权重= [1000,500,500]费用= [150,75,75]
我们不需要将它们分成多个包装,因为所有产品的总成本不超过300美元。所以我们可以将它们作为一个包发送。
Ex:权重= [1000,500,500]费用= [200,100,100]
现在所有产品的成本都超过300美元,因此我们必须将它们分成相同重量的包装,每个产品的成本不应超过300美元。
我们可以将它们分成两个包装,一个包含1000克,另一个包含1000克(500 + 500),成本不超过300美元。
我不是在寻找代码或其他东西。我只需要一个关于如何分割多个包事件的提示或算法。
答案 0 :(得分:0)
找到具有给定权重的单个子集是NP难的。如果你有某种方法来识别给定重量的所有子集并且其成本低于300美元,那么你需要解决一个确切的覆盖问题,这通常是NP难的。因此,在最坏的情况下,你不能指望找到任何复杂度低于指数的算法。
但我在这里尝试的是:
let W = total weight of all packages
let N = total number of packages
for k = 1, 2, 3, ..., N
find all subsets of packages with weight W/k and cost less than $300
if there's an exact cover: stop with solution.
假设不同重量和成本的数量足够小,您可以使用动态编程找到正确重量和成本的子集。您可以使用跳舞链接算法找到确切的封面。