import java.util.Scanner;
import java.util.ArrayList;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
// 递归生成全排列的方法
// listA: 当前已排列的部分
// listB: 待排列的元素集合
public static void fullPermutation(ArrayList<Integer> listA,
ArrayList<Integer> listB) {
int len_b = listB.size(); // 获取待排列元素的个数
// 基准情况:如果listB为空,说明所有元素都已排列完成
if (len_b == 0) {
for (Integer i : listA) {
System.out.print(i + " "); // 输出当前排列结果
}
System.out.println();
} else {
// 递归情况:遍历listB中的每个元素
for (int i = 0; i < len_b; i++) {
// 创建当前排列和待排列列表的副本(避免修改原列表)
ArrayList<Integer> tempA = (ArrayList<Integer>) listA.clone();
ArrayList<Integer> tempB = (ArrayList<Integer>) listB.clone();
// 从待排列列表中移除第i个元素,并添加到当前排列中
tempA.add(tempB.remove(i));
// 递归调用,继续排列剩余元素
fullPermutation(tempA, tempB);
}
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in); // 创建Scanner对象读取输入
int n = input.nextInt(); // 读取用户输入的整数n
ArrayList<Integer> listA = new
ArrayList<>(); // 初始化当前排列列表(空)
ArrayList<Integer> listB = new ArrayList<>(); // 初始化待排列元素列表
// 初始化待排列的listB,添加1到n的整数
for (int i = 1; i <= n; i++) {
listB.add(i);
}
// 调用全排列方法
fullPermutation(listA, listB);
input.close(); // 关闭Scanner(建议添加)
}
}