package demo9;
import java.util.ArrayList;
import java.util.List;
/**
* @author xianyu
* @version 1.0
* @date 2020/4/23 20:18
* 全排列
*/
public class perm2 {
public static void main(String[] args) {
int[] nums = new int[]{1,2,3};
List<List<Integer>> res = permute(nums);
System.out.println(res.toString());
}
public static List<List<Integer>> permute(int[] nums){
List<List<Integer>> res = new ArrayList<>();
dfs(nums,0,nums.length-1,res);
return res;
}
public static void dfs(int[] nums,int p,int q,List<List<Integer>> res){
if(p == q){
List<Integer> list = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
list.add(nums[i]);
}
res.add(list);
}
for (int i = p; i <= q ; i++) { // 从p到q之间的每一个元素都必须充当一次领导位
swap(nums,p,i); // 交换
dfs(nums,p+1,q,res);
swap(nums,p,i); // 还原
}
}
public static void swap(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
全排列
最新推荐文章于 2025-03-10 22:27:24 发布