gpt4 book ai didi

java - 获取数字数组所有可能排列的 ArrayList

转载 作者:行者123 更新时间:2023-11-30 06:26:27 25 4
gpt4 key购买 nike

我试图获取数字数组的所有可能的排列并将其存储在 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;
}
}

最佳答案

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

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

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

关于java - 获取数字数组所有可能排列的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47108483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com