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(建议添加) } }