从3个元素中取出6个元素,作为一个新数组, 允许元素重复,多个组合之间元素个数不允许重复,使用java
时间: 2024-05-04 20:21:50 浏览: 28
你可以使用递归的方式来实现组合的生成,具体代码如下:
```java
import java.util.ArrayList;
import java.util.List;
public class Combination {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
List<List<Integer>> combinations = generateCombinations(nums, 6);
for (List<Integer> combination : combinations) {
System.out.println(combination.toString());
}
}
private static List<List<Integer>> generateCombinations(int[] nums, int k) {
List<List<Integer>> result = new ArrayList<>();
generateCombinationsHelper(nums, k, 0, new ArrayList<>(), result);
return result;
}
private static void generateCombinationsHelper(int[] nums, int k, int start, List<Integer> current, List<List<Integer>> result) {
if (current.size() == k) {
result.add(new ArrayList<>(current));
return;
}
for (int i = start; i < nums.length; i++) {
current.add(nums[i]);
generateCombinationsHelper(nums, k, i, current, result);
current.remove(current.size() - 1);
}
}
}
```
在这个代码中,我们定义了一个 `generateCombinations` 方法来生成所有可能的组合。这个方法会调用一个辅助函数 `generateCombinationsHelper`,它会递归生成所有可能的组合,并将结果存储在一个列表中返回。
在 `generateCombinationsHelper` 函数中,我们首先检查当前组合的长度是否达到了要求。如果达到了,我们就将这个组合加入到结果列表中。否则,我们从起始位置开始,枚举所有可能的元素,并递归生成下一位的组合。在递归调用返回后,我们需要将当前元素从组合中移除,以便枚举下一个元素。