【问题标题】:Get ArrayList of all possible permutations of an Array of numbers获取数字数组的所有可能排列的 ArrayList
【发布时间】:2017-11-04 07:24:12
【问题描述】:

我正在尝试获取一个数字数组的所有可能排列并将其存储在一个 ArrayList 中,但总是获得与 arraylist 的所有元素相同的排列作为默认元素 {1、4、9、11} 有什么帮助吗? `

public static void main (String[] args) throws java.lang.Exception
{       
    int [] my_numbers = {1,4,9,11};
    ArrayList<int []> permutation_results = new ArrayList<int []>();

    arrayPermutations(permutation_results,my_numbers,0);
}

public static void arrayPermutations(ArrayList<int []> result ,int[] 
numbers, int index){
    if(index >= numbers.length - 1){ 

        result.add(numbers);

        return;
    }

    for(int i = index; i < numbers.length; i++){ 

        int t = numbers[index];
        numbers[index] = numbers[i];
        numbers[i] = t;

        arrayPermutations(result, numbers, index+1);

        t = numbers[index];
        numbers[index] = numbers[i];
        numbers[i] = t;
    }
}

【问题讨论】:

  • 请检查您基本的参考传递和值传递

标签: java arrays arraylist permutation


【解决方案1】:

您需要将数组的副本传递给递归调用:

arrayPermutations(result, numbers.clone(), index + 1);

否则所有调用都会修改同一个int[]实例, 所以同一个实例会被多次添加到结果列表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-07
    • 2011-07-27
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2017-05-03
    相关资源
    最近更新 更多