给定一个整数数组,如何将整数分配给两个具有容量的不同数组?

问题描述 投票:0回答:1

给定一个整数列表,您必须将整数添加到两个列表之一,每个列表的容量必须小于列表内整数的总和。

这只是我想要解决的问题的粗略描述,我正在尝试将相同的逻辑应用于高级项目。我尝试采用贪婪方法,但这是一个动态编程问题,因此我需要针对边缘情况更好的解决方案。

arrays dynamic-programming
1个回答
0
投票

这是一个有 2 个 bin 的装箱问题,在最坏的情况下,相当于子集和问题。

设 S 为数组 A 的总和,C 为两个子列表中每个子列表的容量。显然,如果 S > 2C,则无解。否则,S ≤ 2C,则需要找到 A 的子序列,其和在 S-C 和 C 之间,使得补码的和最多为 C。

这是一个经典的子集和问题,您可以使用标准动态规划算法来解决,您可以在维基百科或任何其他地方找到该算法。

© www.soinside.com 2019 - 2024. All rights reserved.