来自n个数组的组合使用Java从每个数组中挑选一个元素

时间:2017-10-20 11:26:27

标签: java arrays cartesian-product

我正在研究GeeksForGeeks的算法:

给定一个数组列表(任何大小,不限于两个数组),找到所有组合,其中每个组合包含每个给定数组中的一个元素。

示例:

输入:[[1,2],[3,4]]

输出:

1 3

1 4

2 3

2 4

我尝试使用这种方法自行解决:

 Initialize "result" list of arraylist.
 For each element of the first array in the input list:
    depth = 1
    while(depth < list.size())
     arrayToCombineWithItsElmt = list.get(depth)
     for(int i =0; i<arrayToCombineWithItsElmt.size() ; i++)
       GenerateCombinations(result, arrayToCombineWithItsElmt(i))
     depth++
 return result

GenerateCombinations(List result,int element)方法应该:

1-复制结果列表(包含以前的组合)

2-删除结果列表的所有元素

3-迭代复制的列表,并为每个Array添加元素

4-将数组添加到结果列表。

我没有编码(使用Java ),因为我觉得它不正确(非常复杂的解决方法)。 从我尝试手动解析示例后获得的这种强力算法,如何优化?

0 个答案:

没有答案