解题思路:
注意事项:除了重写compareTow外还可以尝试用Arrays.sort(***,new Comparator<***> )的方法,效果一样,详情看另一个题解https://blog.dotcpp.com/a/102614
参考代码
import java.util.Arrays; import java.util.Scanner; class Candidate implements Comparable<Candidate> { int id; int score; public Candidate(int id, int score) { this.id = id; this.score = score; } @Override public int compareTo(Candidate other) { if (this.score != other.score) { return Integer.compare(other.score, this.score); // 成绩降序排列 } else { return Integer.compare(this.id, other.id); // 成绩相同时,按报名号升序排列 } } } public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 选手总数 int m = scanner.nextInt(); // 计划录取人数 Candidate[] candidates = new Candidate[n]; for (int i = 0; i < n; i++) { int id = scanner.nextInt(); int score = scanner.nextInt(); candidates[i] = new Candidate(id, score); } // 排序 Arrays.sort(candidates); // 计算面试分数线 int interviewLineIndex = (int) (m * 1.5) - 1; int interviewLineScore = candidates[interviewLineIndex].score; // 输出面试分数线和进入面试的人数 int selectedCount = 0; for (int i = 0; i < n; i++) { if (candidates[i].score >= interviewLineScore) { selectedCount++; } else { break; } } System.out.println(interviewLineScore + " " + selectedCount); // 输出进入面试的选手的报名号和笔试成绩 for (int i = 0; i < selectedCount; i++) { System.out.println(candidates[i].id + " " + candidates[i].score); } scanner.close(); } }
0.0分
1 人评分
C语言训练-求PI* (C语言代码)(正确结果竟然是谜一样的3.141591)浏览:1338 |
点我有惊喜!你懂得!浏览:1462 |
C语言程序设计教程(第三版)课后习题12.3 (C语言代码)浏览:878 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:668 |
P1002 (C语言代码)浏览:1019 |
买不到的数目 (C++代码)浏览:909 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:565 |
1157题解浏览:769 |
数对 (C语言代码)浏览:762 |
简单的a+b (C语言代码)浏览:457 |