gpt4 book ai didi

java - 在java中找到一个集合的所有可能的组合

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:03 25 4
gpt4 key购买 nike

好吧,我们基本上有这个问题要回答,但我很困惑,不知道如何使用递归来获得所有可能的组合..请有人救救我!

写一个public static method threadings ,需要 int n (代表每条项链上的珠子数量)和一套Strings (代表可用的珠 colours ;您的代码不得更改此 Set),并返回一组 ArrayListsStrings ,表示给定颜色的 n 个珠子可以穿入的所有顺序。如果n < 1 ,返回一个仅包含一个空的 Set ArrayList .

正确行为示例:

threadings(0, {red,green}) = {[]}

threadings(1, {red,green}) = {[red],[green]}

threadings(2, {red,green})
= {[red,red],[red,green],[green,red],[green,green]}

threadings(3, {red}) = {[red,red,red]}

提示:您可能需要 threadings递归地调用自身,尽管任何正确的方法均可获得满分。

这是我到目前为止所写的内容:

 public static HashSet<ArrayList<String>> threadings (int n, Set<String> colours){
HashSet<ArrayList<String>> result= new HashSet<ArrayList<String>>();
ArrayList<String> inresult= new ArrayList<String>();
String[] col= new String[colours.size()];
if (n==0){
result.add(inresult);
return result;
}else{

}
}

最佳答案

试试这个:

public static HashSet<ArrayList<String>> threadings (int n, Set<String> colours) {
List<String> colorsList = new ArrayList<>(colours);
ArrayList<String> resultList = new ArrayList<>();
HashSet<ArrayList<String>> result = new HashSet<ArrayList<String>>();
int carry;
int[] indices = new int[n];
do
{
for(int index : indices) {
resultList.add(colorsList.get(index));
}
result.add(resultList);
resultList = new ArrayList<>();

carry = 1;
for(int i = indices.length - 1; i >= 0; i--)
{
if(carry == 0)
break;

indices[i] += carry;
carry = 0;

if(indices[i] == colorsList.size())
{
carry = 1;
indices[i] = 0;
}
}
}
while(carry != 1);

return result;
}

关于java - 在java中找到一个集合的所有可能的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43170507/

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