从n个元素的数组中找到2个子数组,这些元素具有等于或接近其元素的总和

时间:2016-04-14 22:15:55

标签: algorithm math

假设您有一个数组= [2,3,3,6,7],它没有排序,但如果您愿意,可以对其进行排序。使用数组中的所有元素查找2个子数组,以便生成的子数组为[2,3,6]和[7,3],因为2 + 3 + 6 = 11和7 + 3 = 10.

得到的子阵列的总和不必相等,但它们应该尽可能接近。

我的第一种方法是按照desc顺序对这些元素进行排序,并从数组的每一端获取元素。

任何帮助都会很感激,谢谢。

2 个答案:

答案 0 :(得分:0)

假设所有数字的总和为N。确定是否存在两个子集具有相等和的解决方案等同于确定是否存在添加到N / 2的子集的问题。

The best known algorithms for this problem are exponential

答案 1 :(得分:0)

我发现这是一个众所周知的问题,称为分区问题。有关详细信息:https://en.wikipedia.org/wiki/Partition_problem

相关问题