1
我正在学习DP,并且在阅读平衡分区算法时遇到了这个问题。在这个算法中,我们可以将列表分成两个列表,这些列表的元素总和相等。但是如果我需要K列表并且我需要他们有一个最小的总和呢?我想修改平衡分区算法来解决这个问题,但我实际上没有办法做到这一点。设S为{1,1,5},K = 2的最优解为{1,1},{5}。如何将一个集合划分为K个子集,这样子集中元素的总和最小?
任何提示? 在此先感谢。
我正在学习DP,并且在阅读平衡分区算法时遇到了这个问题。在这个算法中,我们可以将列表分成两个列表,这些列表的元素总和相等。但是如果我需要K列表并且我需要他们有一个最小的总和呢?我想修改平衡分区算法来解决这个问题,但我实际上没有办法做到这一点。设S为{1,1,5},K = 2的最优解为{1,1},{5}。如何将一个集合划分为K个子集,这样子集中元素的总和最小?
任何提示? 在此先感谢。
一个简单的算法将是:
sort S in descending order
for each element in S:
put it into the partition with the smallest sum
这将使5
到第一分区和所述1
s转换在你的例子(K = 2)的第二个分区。
也许我错过了一些东西,但不是'{1,1} = 2'和总和{5} = 5',因此不等于? –
@SethKitchen你已经使用了5次两次。 –
也不能包含重复项,因此该示例无效。 –