如何从包含另一个数组

时间:2017-03-09 12:56:51

标签: java arrays algorithm

我有一个包含[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]]等。

1 个答案:

答案 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]