输入一个包含整数的数组,判断所有排列的方式
public static void main(String[] args) {
int [] arr={1,2,3};
f(arr,0);
}
private static void f(int[] arr, int k) {
if (k==3){
print(arr);//此处为结束条件,此处出来的数据便是全排列的结果
}
for (int i = k; i < arr.length; i++) {
int t=arr[k];//记住全排列的结构
arr[k]=arr[i];
arr[i]=t;
f(arr,k+1);
t=arr[k];
arr[k]=arr[i];
arr[i]=t;
}
}
private static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
}
System.out.println();
}
import java.util.ArrayList;
/**
* @author songxh
* @create 2022-03-20-15:17
*/
public class dfs之全排列 {
public static void main(String[] args) {
int[] nums={0,1,2,3,4,5,6,7,8,9};
boolean[] bp=new boolean[nums.length];
ArrayList<ArrayList<Integer>> list=new ArrayList<>();
ArrayList<Integer> li=new ArrayList<>();
dfs(nums,bp,list,li);
System.out.println(list.size());
}
static void dfs(int[] nums, boolean[] bp, ArrayList<ArrayList<Integer>> list, ArrayList<Integer> li){
if (li.size()==nums.length){
list.add(new ArrayList<>(li));
return;
}
for (int i = 0; i < nums.length; i++) {
int c=nums[i];
if (!bp[i]){
bp[i]=true;
li.add(c);
dfs(nums, bp, list, li);
li.remove(li.size()-1);
bp[i]=false;
}
}
}
}