【问题标题】:algorithm to merge x lists of y elements to a cap of z elements each将 y 元素的 x 个列表合并到每个 z 元素的上限的算法
【发布时间】:2012-05-23 03:22:19
【问题描述】:

基本上我需要一些适合以下问题的算法:

我有 5 个列表:每个列表有 10、30、40、40 和 50 个元素 有 80 个元素的上限 我现在想要实现的是: 3 个列表:10、80 和 80 个元素

40 和 40 合并到 80 和 30 和 50 合并到 80,具有 10 个元素的列表作为第三个结果列表 意思是我想以某种方式合并所有列表,但上限为 80 个元素,所以我真的只有我真正需要的列表

这不是排序的问题,只是合并的问题 无法拆分列表,列表的元素应始终保持在一起

希望你能帮助我,谢谢!

【问题讨论】:

  • 澄清一下,目标是尽量减少合并后的最终列表数量,不一定要尽可能多地填充到80?它们可能密切相关,但我认为它们的目标略有不同。无论如何,我很想看看这是如何解决的。
  • 如果可能,它应该使用最少数量的列表将列表填充到 80 个元素

标签: php algorithm math merge


【解决方案1】:

这听起来像bin packing problem .. 这是一个 NP 难题,因此如果没有一些启发式方法,您将无法快速实现这一目标。维基百科页面有一些代码可能对您有所帮助——既然您已经为其命名,或许您可以进行更多搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2022-09-30
    • 1970-01-01
    • 2013-03-31
    • 2018-11-27
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多