输入样例:
3
输出样例:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
解题思路:
全排列问题。
递归顺序:依次枚举每个位置放哪个数。
Java题解:
import java.util.*;
public class Main {
static int n;
static boolean []vis;//访问数组
static List<Integer> list = new ArrayList<>();//用于存储每次符合条件的排序
static StringBuilder ans = new StringBuilder();//用于拼接答案
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
scan.close();
vis = new boolean[n + 1];
f(1);
System.out.print(ans);
}
public static void f(int m) {
if(list.size() >= n) {
StringBuilder bu = new StringBuilder();
for(int data : list) {
bu.append(data + " ");
}
ans.append(bu + "\n");
return ;
}
for(int i = 1; i <= n; i++) {
if(!vis[i]) {
list.add(i);
vis[i] = true;
f(i + 1);
vis[i] = false;
list.remove(list.size() - 1);
}
}
}
}