如何将数据分成最小的组

时间:2019-03-09 18:14:28

标签: algorithm

我想知道是否可以将某些数据分成最小组的算法。

看起来应该像
前提条件:某些数据的总和<= m,其中m是一个显式数,
期望:这些数据分为最小计数组。

是否有算法或好主意?

谢谢。

这里是一个例子。

List<Integer> rawList = Arrays.asList(1, 1, 1, 2, 10, 5, 8, 3);

您可以将它们分为8个组,每个组包含1个数字,
这不是我想要的。

Integer maxSum = 12; //Assume that one group can holds max sum of 12.

我需要最少的组,所以答案看起来像

List<Integer> group1 = Arrays.asList(10, 2);
List<Integer> group2 = Arrays.asList(8, 3, 1);
List<Integer> group3 = Arrays.asList(5, 1, 1);

上面的示例仅花费了3组来分割原始数据。
这三个组将是一个答案。(还有其他使用最小组的方法。)

这似乎类似于@Dillon Davis提到的垃圾箱包装问题。我认为只有这一点更容易。

Ps。答案需要最少的组,时间和空间的复杂性不是主要问题。

0 个答案:

没有答案