我正在研究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 ),因为我觉得它不正确(非常复杂的解决方法)。 从我尝试手动解析示例后获得的这种强力算法,如何优化?