5 条题解
-
0
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); } }
信息
- ID
- 83
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 378
- 已通过
- 143
- 上传者