基本上我需要一些适合以下问题的算法:
我有 5 个列表:每个列表有 10、30、40、40 和 50 个元素 元素上限为 80 个 我现在想要实现的是: 3 个列表:10、80 和 80 个元素
40 和 40 合并为 80,30 和 50 合并为 80,具有 10 个元素的列表保留为第三个结果列表 这意味着我想以某种方式合并所有列表,但上限为 80 个元素,所以我实际上只有我真正需要的列表
这不是排序的问题,只是合并的问题 不可能拆分列表,列表的元素应始终保持在一起
希望您能帮助我,谢谢!
最佳答案
这听起来像 bin packing problem ..这是一个 NP 难题,因此如果没有一些启发式方法,您无法快速实现这一目标。维基百科页面有一些代码可能可以帮助您 - 现在您已经知道了它的名称,也许您可以搜索更多内容。
关于php - 将 y 元素的 x 列表合并到每个 z 元素的上限的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10603712/