gpt4 book ai didi

arrays - 如何使用指定数量的元素创建指定大小的数组的每个版本?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:30 25 4
gpt4 key购买 nike

我要问的是如何初始化包含指定数量的相同元素的指定大小数组的所有不同变体的列表?

因此,例如,一个包含三个相同元素的大小为 5 的数组可以通过这些方式完成,其中 X 是元素,O 是空白。

1) [X, X, X, O, O]

2) [X, X, O, X, O]

3) [X, X, O, O, X]

4) [X, O, X, X, O]

5) [X, O, X, O, X]

6) [X, O, O, X, X]

7) [O, X, X, X, O]

8) [O, X, X, O, X]

9) [O, X, O, X, X]

10) [O, O, X, X, X]

可以使用什么算法来创建这种结果?

最佳答案

您可以使用递归算法生成所有可能的排列:

public static void main(String[] args) {
ArrayList<char[]> list = new ArrayList<char[]>();
char[] c = {'O', 'O', 'O', 'O', 'O'};
nextArray(list, c, 0, 3);
}

public static void nextArray(List<char[]> list, char[] array, int index, int changes) {
if(index == array.length) return;
if(changes == 0) {
list.add(array);
return;
}

char[] a1 = Arrays.copyOf(array, array.length);
a1[index] = 'X';

nextArray(list, a1, index+1, changes-1);
nextArray(list, Arrays.copyOf(array, array.length), index+1, changes);
}

想法是一次更改一个索引(跟踪更改索引的次数),直到 changes = 0。然后添加该数组并终止递归的分支。

关于arrays - 如何使用指定数量的元素创建指定大小的数组的每个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36441279/

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