Java语言如何均匀将数组分为N等分,每个数组的和要求尽量相等,怎么实现呢

问题描述:

Java语言如何均匀将数组分为N等分,每个数组的和要求尽量相等,怎么实现呢
Java语言如何均匀将数组分为N等分,每个数组的和要求尽量相等,怎么实现呢

可以使用动态规划+dfs,首先按照下标分组,然后再移动,直到找到最均匀的

/**

将一组数据分组,每组n个元素

@param source 要分组的数据源

@param n 每组n个元素

@param

@return
*/
public static List fixedGrouping2(List source, int n) {

if (null == source || source.size() == 0 || n <= 0)
return null;
List result = new ArrayList();
int remainder = source.size() % n;
int size = (source.size() / n);
for (int i = 0; i < size; i++) {
List subset = null;
subset = source.subList(i * n, (i + 1) * n);
result.add(subset);
}
if (remainder > 0) {
List subset = null;
subset = source.subList(size * n, size * n + remainder);
result.add(subset);
}
return result;
}