给出一个数字列表5,10,15,25,35,45
,您如何将数字分配到两个单独的总和中,以使每个总和成为最小的数字?
手动计算会使我相信这是最小的两个总和:
5+10+15+35 = 65
25+45 = 70
但是您也可以通过以下方式获得相同的结果
5+15+45 = 65
10+25+35 = 70
以及其他几个。给定不同的设置,例如
5.7, 10.2, 15.3, 25.6, 35.1, 45.8
最佳结果似乎是
5.7 + 15.3 + 45.8 = 66.8
10.2 + 25.6 + 35.1 = 70.9
在这样的情况下(与上面类似),可能还会有具有相同最佳总和的其他集合,因此也需要找到所有可能的总和以获得相同的结果,尽管知道最终总和就足够了让我获得其余的可能组合。
我认为处理此问题的最佳方法是找到该集合的总和并除以2,然后取总和的每种可能组合,并找到最接近平均值的总和,但是我想在此发布看看是否有更有效的方法。
哪种算法适合在这里使用?在我无法找到的StackOverflow的其他地方,有此用例的任何示例吗?