我们知道c++有库函数可以直接实现全排列,但是java却没有这个方法,如果要想使用java实现全排列,则需要使用dfs算法。而且这是固定写法,需要记住。
//确定第k位数是什么
public static void dfs(int[] arr, int k) {
//排列完成,打印出来
if(k == arr.length) {
System.out.println(Arrays.toString(arr));
return;
} else {
//把所有的可能用for循环列出来
for(int i = k;i < arr.length;i++) {
swap(arr, i, k);
dfs(arr, k + 1);
swap(arr, i, k);//回溯
}
}
}
public static void swap(int[] arr, int i,int j) {
int temp;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}