输出几个元素的无重复全排列java
时间: 2023-06-02 12:01:37 浏览: 59
以下是一个输出给定数组中元素的无重复全排列的Java程序:
```java
import java.util.*;
public class Permutations {
public static void main(String[] args) {
int[] nums = {1, 2, 3};
List<List<Integer>> result = permute(nums);
for (List<Integer> list : result) {
System.out.println(list);
}
}
public static List<List<Integer>> permute(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
if (nums == null || nums.length == 0) {
return result;
}
boolean[] used = new boolean[nums.length];
List<Integer> list = new ArrayList<>();
backtrack(nums, used, list, result);
return result;
}
private static void backtrack(int[] nums, boolean[] used, List<Integer> list, List<List<Integer>> result) {
if (list.size() == nums.length) {
result.add(new ArrayList<>(list));
return;
}
for (int i = 0; i < nums.length; i++) {
if (used[i]) {
continue;
}
used[i] = true;
list.add(nums[i]);
backtrack(nums, used, list, result);
used[i] = false;
list.remove(list.size() - 1);
}
}
}
```
程序的核心是一个递归函数`backtrack`,该函数用于生成所有可能的排列。在每次递归中,我们枚举数组中所有未被使用过的元素,将其加入当前排列中,并递归生成下一个位置的排列。如果当前排列已经包含所有元素,则将其加入结果集中。最后,需要将当前元素从排列中移除,以便尝试其他可能的排列。