import java.util.*;
public class Main {
public static boolean flag[];// 标记第i个元素是否被使用过
public static int n;
public static int road[];
//用来检查是否是正序的
public static boolean check(int road[], int total) {
boolean natural = true;
for (int i = 1; i < total; i++) {
if (road[i] > road[i + 1])
natural = false;
}
return natural;
}
// idx 选择第几个数了
// 选取元素总数
public static void dfs(int idx, int num[], int total) {
if (idx > total) {
if (check(road,total)) {
for (int i = 1; i <= total; i++) {
System.out.print(road[i] + " ");
}
System.out.println();
}
return;
}
for (int i = idx ; i <= n; i++) {
if (!flag[i]) {
road[idx] = num[i];
flag[i] = true;
dfs(idx + 1, num, total);
flag[i] = false;
}
}
return;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
int r = sc.nextInt();
flag = new boolean[n + 5];
int num[] = new int[n + 5];
road = new int[n + 5];
for (int i = 1; i <= n; i++) {
num[i] = sc.nextInt();
}
// fromIndex 是排序开始的位置(包含),toIndex 是排序结束的位置(不包含)。
// 这意味着 Arrays.sort(a, fromIndex, toIndex) 将对数组 a 从索引 fromIndex 到 toIndex - 1 的范围进行排序。
Arrays.sort(num, 1, n+1);
sc.close();
dfs(1, num, r);
}
}
0 回复
0 转发
0 喜欢
5 阅读



