对输入的n个数作全排列。
输入样例
3
1 2 3
输出样例
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
import java.util.Scanner;
public class Main {
public static int[] a;//存放 要全排的数字
public static int[] b;//存放全排的数字的一种
public static boolean[] used;//标记该数是否用过了
public static int n ;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
a = new int[n];
b = new int[n];
used = new boolean[n];
for(int i = 0 ; i < n; i++){
a[i] = sc.nextInt();
used[i] = false;
}
fullPermutation(0);
}
private static void fullPermutation(int l) {
if(l==n){
for(int i = 0 ; i < n;i++ ){
System.out.print(b[i]+" ");
}
System.out.println();
return ;
}
for(int i = 0 ; i < a.length; i++){
if(!used[i]){//如果该数没用过标记其为true
used[i] = true;
b[l] = a[i];
fullPermutation(l+1);
used[i] = false;//差点又忘记回溯
}
}
}
}