我有一个2D阵列
int[][] lists=new int[][]{{22, 23},{34, 35},{47, 15}};
如何获取2D数组中每个元素的所有可能组合?
我得各个元件的所有组合在每行中,像这样: int [][] result= {{22,34,47},{22,34,15},{22,35,47},{22,35,15},{23,34,47},{23,34,15},{23,35,47},{23,35,15}}
然后,对于从最新的阵列,每个行我必须计算平均。为此,我创建了一个方法average(int[]a)
。 我只需要获得平均值最高的组合。 因为我的初始数组可以有大量的行/列,我试图生成每个组合,并检查它的平均值是否高于然后记忆它。 这是我的代码,但显然它不起作用。有人能帮我吗?
public static int average(int[]a)
{
int sum=0;
for(int i=0;i<a.length;i++)sum+=a[i];
return sum/a.length;
}
public static void cartesian(int[][] lists, int[] values, int n)
{
int sum=0;
List<List<Integer>> result = new ArrayList<List<Integer>>();
if (n == lists.length) {
if(average(values)>sum) {
result.clear();
result.add(Arrays.stream(values).boxed().collect(java.util.stream.Collectors.toList()));
sum=average(values);}
}
else
{
for(int i: lists[n]) {
values[n] = i;
cartesian(lists, values, n+1);
}
}
return result;
}
public static void main(String[] args)
{
List<List<Integer>> result = cartesian(lists, new int[lists.length], 0);
for(List<Integer> i: result) System.out.println(i);
}
我相当肯定,[Commons Math](http://commons.apache.org/proper/commons-math/)有一个组合函数,可能是对此有用。不知道它是否做了阵列,也许只有nCr类型。 –