【思路】
f数组记录当前排列的一个方案
vis数据记录使用过的数字
m表示递归的深度,当深度达到叶子结点即m == n时,枚举一个排列方案成功。
import java.util.Scanner;
public class Main{
static int n;
static boolean vis[] = new boolean[15];
static int [] f = new int [15];
public static void dfs(int m){
if(m > n) return;
if( m == n){
for(int k = 0; k < n; k++)
System.out.print(f[k]+" ");
System.out.println();
return;
}
for(int i = 1; i <= n; i++){//当前层有n种选择
if(!vis[i]){
vis[i] = true;
f[m] = i;
dfs(m + 1);//递归调用下一层
vis[i] = false;
}
}
}
public static void main(String args[]){
Scanner reader = new Scanner(System.in);
n = reader.nextInt();
dfs(0);
}
}