我有一个包含[2,3,4]
等唯一数字的数组。
我有另一个数组,其中包含一些数字,包括重复项,如a2 = [1,2,2,3,4,4,3,5,6,7]
我想要array-2中所有可能的组合,其中包含array-1的所有值
例如[a2[1],a2[3],a2[4]]
,[a2[2],a2[3],a2[4]]
等。
答案 0 :(得分:1)
你需要进行递归。我编写了一些能够引导您找到正确方向的东西。它可能有效,但我没有测试它:
public static void main(String[] args) {
int[] a1 = new int[]{2,3,4};
int[] a2 = new int[]{1,2,2,3,4,4,3,5,6,7};
recursion(a1,a2, new String());
}
public static void recursion(int[] a1, int[] a2, String soFar){
int toSearch = a1[0];
for(int i=0;i<a2.length;i++){
if(a2[i] == toSearch){
if(a1.length>1) {
int[] a1b = new int[a1.length - 1];
for (int j = 1; j < a1.length; j++) {
a1b[j - 1] = a1[j];
}
recursion(a1b, a2, soFar+ "a2["+i+"]");
}
else {
System.out.println(soFar+ "a2["+i+"]");
}
}
}
}
输出结果为:
a2[1]a2[3]a2[4]
a2[1]a2[3]a2[5]
a2[1]a2[6]a2[4]
a2[1]a2[6]a2[5]
a2[2]a2[3]a2[4]
a2[2]a2[3]a2[5]
a2[2]a2[6]a2[4]
a2[2]a2[6]a2[5]