我正在尝试获取数组数组的所有可能排列并将其存储在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;
}
}
答案 0 :(得分:1)
您需要将数组的副本传递给递归调用:
arrayPermutations(result, numbers.clone(), index + 1);
否则所有调用都会修改相同的int[]
实例,
因此,同一个实例会多次添加到结果列表中。