gpt4 book ai didi

java - 找出一组给定数字的 n 个数字的所有组合

转载 作者:行者123 更新时间:2023-11-29 03:21:51 33 4
gpt4 key购买 nike

我想编写一个应用程序来查找给定数字集的 n 个数字的所有可能组合,并返回它们的哈希集。例如,如果给定集合 {1,5,7,9} 和集合 2 的大小,那么我将采用:

[1, 5] [1, 7] [1, 9] [5, 7] [5, 9]

我从这个 post 得到以下代码但我不能每次都针对给定的集合大小修改它。

import java.util.ArrayList;
import java.util.Arrays;

class SumSet {
static void sum_up_recursive(ArrayList<Integer> numbers,ArrayList<Integer> partial) {

System.out.println("sum("+Arrays.toString(partial.toArray())+")=");

for(int i=0;i<numbers.size();i++)
{
ArrayList<Integer> remaining = new ArrayList<Integer>();
int n = numbers.get(i);
for (int j=i+1; j<numbers.size();j++)
remaining.add(numbers.get(j));

ArrayList<Integer> partial_rec = new ArrayList<Integer>(partial);
partial_rec.add(n);
sum_up_recursive(remaining,partial_rec);
}
}
static void sum_up(ArrayList<Integer> numbers) {
sum_up_recursive(numbers,new ArrayList<Integer>());
}
public static void main(String args[]) {
Integer[] numbers = {1,5,7,9};
sum_up(new ArrayList<Integer>(Arrays.asList(numbers)));
}
}

最佳答案

谢谢大家...我也找到了这个解决方案

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;

public class Comb {

static HashSet combine(Integer[] arr, int k, int startId, int[] branch, int numElem,HashSet arrSet)
{
if (numElem == k)
{
//System.out.println("k: "+k+(Arrays.toString(branch)));
ArrayList<Integer> mySet = new ArrayList<Integer>();
for(int i=0;i<branch.length;i++)
{
mySet.add(branch[i]);
}
arrSet.add(mySet);
return arrSet;
}

for (int i = startId; i < arr.length; ++i)
{
branch[numElem++]=arr[i];
combine(arr, k, ++startId, branch, numElem, arrSet);
--numElem;
}
return arrSet;
}

public static void main(String args[])
{
int k = 3;
Integer[] input ={1,5,7,9}; "ABCD".toCharArray();
int[] branch = new int[k];//{0,0};//new char[k];
HashSet arrSet=new HashSet();
arrSet=combine(input, k, 0, branch, 0, arrSet);
}
}

关于java - 找出一组给定数字的 n 个数字的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23131039/

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