Java中n个子数组的值组合

Zhu*_*arb 3 java arrays recursion combinations cartesian-product

我想创建一个Java方法,它接受一个inputArray = Object[n][],其中n可以是任何整数,并输出n个子数组的所有值之间可能的n大小组合的列表.以下是一个例子:

输入数组:(其中Object = String,n = 3)

String[] subarrayA = {"A0","A1","A2"};
String[] subarrayB = {"B0","B1"};
String[] subarrayC = {"C0","C1","C2","C3"};
String[3][] inputArray = {subarrayA, subarrayB, subarrayC};
Run Code Online (Sandbox Code Playgroud)

期望的输出:

{A0,B0,C0},{A0,B0,C1},{A0,B0,C2},{A0,B0,C3},
{A0,B1,C0},{A0,B1,C1},{A0,B1,C2},{A0,B1,C3},
{A1,B0,C0},{A1,B0,C1},{A0,B0,C2},{A1,B0,C3},
{A1,B1,C0},{A1,B1,C1},{A1,B1,C2},{A1,B1,C3},
{A2,B0,C0},{A2,B0,C1},{A2,B0,C2},{A2,B0,C3},
{A2,B1,C0},{A2,B1,C1},{A2,B1,C2},{A2,B1,C3}
Run Code Online (Sandbox Code Playgroud)

显然,我不能在我的方法中有一个固定的嵌套循环,因为我n事先并不知道.所以,我猜测解决它的唯一方法是通过递归方法?有什么建议?

PS:我知道网站上简单的组合相关帖子.

JPr*_*mer 6

这应该可以解决您的问题.

public static void permute(String array[][], int index, ArrayList<String> output){

    if(index == array.length){
        System.out.println(output.toString());
    }
    else{
        for(int i=0 ; i<array[index].length ; i++){
            output.add(array[index][i]);
            permute(array,index+1,output);
            output.remove(output.size() - 1); 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)