2015-09-25 104 views
1

我正在学习DP,并且在阅读平衡分区算法时遇到了这个问题。在这个算法中,我们可以将列表分成两个列表,这些列表的元素总和相等。但是如果我需要K列表并且我需要他们有一个最小的总和呢?我想修改平衡分区算法来解决这个问题,但我实际上没有办法做到这一点。设S为{1,1,5},K = 2的最优解为{1,1},{5}。如何将一个集合划分为K个子集,这样子集中元素的总和最小?

任何提示? 在此先感谢。

+0

也许我错过了一些东西,但不是'{1,1} = 2'和总和{5} = 5',因此不等于? –

+0

@SethKitchen你已经使用了5次两次。 –

+0

也不能包含重复项,因此该示例无效。 –

回答

0

一个简单的算法将是:

sort S in descending order 
for each element in S: 
    put it into the partition with the smallest sum 

这将使5到第一分区和所述1 s转换在你的例子(K = 2)的第二个分区。

相关问题