我们已经列出了N个数字。
然后我们创建3个分区A,B和C(这些可以只是整数)。我们希望将数字存储在三个分区中,使得具有最大总和的分区与第二个和第三个总和具有最小差异。所以我们希望以这种方式存储数字,以便所有分区的总和尽可能地彼此接近。我们应该存储数字的方式是线性的。我的意思是每个总和都应该有一个与其他序列相邻的数字。我不知道你是否理解我,如果有人,请正确编辑我的问题。
我将提供一个示例,向您展示如何。
我们说我们有以下数字: 8 5 4 3 2 1 3
最佳解决方案是:
A = 8
B = 5 + 4 = 9
C = 3 + 2 + 1 + 3 = 9
我想创建问题的线性复杂性解决方案,但我不知道如何。我创建了一个O(n ^ 2)解决方案,但我想确定是否有更好的解决方案。也许是logarythmic。我不会上传我的代码只是为了不让你们迷惑。如果你想,那么我会。
我想要的解决方案可以用C语言提供,也可以只用算法提供!