我想知道是否可以将某些数据分成最小组的算法。
看起来应该像
前提条件:某些数据的总和<= 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。答案需要最少的组,时间和空间的复杂性不是主要问题。