我有以下问题:给定一组 N 个整数,将它们分成两个几乎相等的分区,使得较大分区的总和最小。这听起来几乎像经典的分区问题,但有一个例外:偶数可以被 2 整除,并且每一半都可以放在一个单独的分区中。
例如:N = 4 数字:20 5 3 1
结果是:15
解释:第一个数字将被二除,每半放在两个分区之一 => 第一个分区 = 10,第二个分区 = 10。第二个数字将添加到第一个分区 => 第一个分区 = 15。最后两个数字将添加到第二个分区 => 第二个分区 = 14
=> 更大分区的总和(分区一)= 15。
我的想法是对奇数进行递减排序并使用贪心算法开始添加它们,始终保持两个分区之和之间的差异尽可能最佳。在完成奇数之后,剩下的就是取偶数,看看是否将它们完全添加到一个分区中,是否比将它们除以 2 并将每一半添加到这两个分区中的一个分区中更好。
同样对于以下数据集,算法将提供正确答案:N = 2 数字:16 15
=> 将取 15,将其添加到第一个分区,然后取 16,看到将其除以 2 不是最佳的,因此它将添加到第二个分区。
=> 答案将是 16。
如果您能给我提供一组数据,算法无法提供最佳答案,我很感兴趣,如果您能提出任何改进建议,我也将不胜感激。
谢谢!:)