【发布时间】:2015-02-13 00:34:38
【问题描述】:
我有一个算法问题的解决方案,如下所述。
我们有一组整数(例如数组)。我们的任务是将它们分成总和彼此相等的组(它们不必具有相同数量的元素)。如果原始集合不能被划分,我们必须给出“不可能划分”的答案。
例如:
将A 设置为[-7 3 3 1 2 5 14]。答案是[-7 14], [3 3 1], [2 5]。
似乎很容易说什么时候肯定是不可能的。当原始集的总和不能被 3 整除时:sum(A) % 3 != 0。
你知道如何解决这个问题吗?
【问题讨论】:
-
你必须将给定的数组分成 3 个部分吗?另外,您在寻找什么样的解决方案复杂性?
-
一个简单的解决方案是简单地返回原始集合!
-
即使我们不能分成3个这样的集合,解决方案也是不可能的。例如,{1000, 1001, 1002, 3} 的总和可被 3 整除,但不可能分成总和相等的子集。
-
@user1952500:Pączek 不是这么说的。如果总和不能被集合的数量整除,那么您确定这是不可能的。问题是,如果是这样呢?
-
@Jongware 第一个声明没有这么说。第二个就是你说的。
标签: algorithm divide partition-problem