输入n个不同的整数,输出所有不重复的组合,Java实现
时间: 2024-05-11 21:16:39 浏览: 80
好的,您可以使用Java中的递归来生成所有的组合。以下是Java代码实现:
```java
import java.util.*;
public class Combination {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
List<List<Integer>> result = new ArrayList<>();
generateCombination(nums, new ArrayList<>(), result, 0);
System.out.println(result);
}
private static void generateCombination(int[] nums, List<Integer> curr, List<List<Integer>> result, int start) {
result.add(new ArrayList<>(curr));
for (int i = start; i < nums.length; i++) {
if (i > start && nums[i] == nums[i - 1]) {
continue; // skip duplicate numbers
}
curr.add(nums[i]);
generateCombination(nums, curr, result, i + 1);
curr.remove(curr.size() - 1);
}
}
}
```
这个程序输入一个整数数组并使用递归算法生成所有不同的组合。它使用ArrayList来存储当前的组合,使用result List来存储所有的组合。在递归过程中,start参数用于跟踪当前数字的位置。如果使用重复数字,我们将跳过它们以避免生成重复的组合。
阅读全文