【问题标题】:Dividing an array into optimum no of equal sum sublists将数组划分为等和子列表的最佳数量
【发布时间】:2015-01-21 01:23:15
【问题描述】:

您好,我正在尝试找出在这个问题中我必须使用哪种数据结构算法。我有两个数组,一个包含产品重量,另一个包含成本。我必须将产品重量划分为每个包裹重量相等的最佳包裹数量,并且分割后单个产品的成本或总物品的成本不应超过每个包裹的 300 美元。

例如:权重 = [1000,500,500] 成本 = [150,75,75]

我们不需要将它们分成多个包裹,因为所有产品的总成本不超过 300 美元。所以我们可以将它们作为一个包裹寄出。

例如:权重 = [1000, 500, 500 ] 成本 = [200, 100, 100]

现在所有产品的成本都超过了 300 美元,所以我们必须将它们分成重量相同的包装,每个包装的成本不应超过 300 美元。

我们可以将它们分成两包,一包 1000 克,一包 1000 克(500 + 500),成本不会超过 300 美元。

我不是在寻找代码或其他东西。我只需要一个关于如何分割多个包的提示或算法。

【问题讨论】:

    标签: algorithm data-structures


    【解决方案1】:

    找到具有给定权重的单个子集是 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.
    

    假设不同权重和成本的数量足够少,您可以使用动态规划找到正确权重和成本的子集。您可以使用跳舞链接算法找到准确的封面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-10
      • 2011-02-22
      • 2021-12-09
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多