代码:
import java.util.Scanner;
public class Main {
/*
* 思路:
测试数据
2
正常输出:
2
12
21
* */
static int n;//n
static int[] a;
public static void main(String[] args){
//1.输入相关值
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
a = new int[n];
for(int i=1;i<=n;i++) {//初始化数组a
a[i-1]=i;
}
//2.输出全排列的总数
int cnt=1;
for(int i=2;i<=n;i++) {
cnt*=i;
}
System.out.println(cnt);
//3.进行全排列
dfs(0);//从第0个位置开始
}
private static void dfs(int k) {
if(k==n) {
print(a);//打印数组a
return;
}
for(int i=k;i<n;i++) {
int t=a[k];
a[k]=a[i];
a[i]=t;
dfs(k+1);
t=a[k];//回溯
a[k]=a[i];
a[i]=t;
}
}
private static void print(int[] a2) {
for(int i=0;i<a2.length;i++) {
System.out.print(a2[i]);
}
System.out.println();
}
}