小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗?
第 1 行输入两个整数,学生人数 n 和科目数量 m。
第 2 行输入 m 个科目名称,彼此之间用空格隔开。
第 3 行开始的 n 行,每行包含一个学生的姓名和该生 m 个科目的成绩(空格隔开)
第n+2行,输入用作排名的科目名称。若科目不存在,则按总分进行排序。
输出一行,按成绩排序后的学生名字,空格隔开。成绩相同的按照学生姓名字典顺序排序。
输入 | 3 2 yuwen shuxue fangfang 95 90 xiaohua 88 95 minmin 100 82 shuxue |
输出 | xiaohua fangfang minmin |
说明 | 按shuxue成绩排名,依次是xiaohua、fangfang、minmin |
输入 | 3 2 yuwen shuxue fangfang 95 90 xiaohua 88 95 minmin 90 95 zongfen |
输出 | fangfang minmin xiaohua |
说明 | 排序科目不存在,按总分排序,fangfang和minmin总分相同,按姓名的字典顺序,fangfang排在前面 |
上述内容部分整理自考生的真实反馈以及网络资源的搜集,我们始终尊重原作者的权益。如若发现任何内容侵犯了您的版权,敬请及时与我们取得联系,我们将立即进行删除处理。
此外,本材料后续的解析与代码部分均为我方原创思考与分析,凝聚了我们的心血与智慧。我们恳请各位尊重原创,切勿随意搬运或抄袭,共同维护良好的学术与创作环境。谢谢!
订阅后可看完整内容,试看真题如下:
华为OD机试真题 - 剩余银饰的重量 (D卷,100分)
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
我们需要理解题目的要求。题目描述了小明作为老师,需要根据学生的考试总分或单科分数对学生进行排名。接下来,我们需要按照题目给定的输入格式和输出要求,逐步进行解题。
Java算法源码
import java.util.*; import java.util.stream.Collectors; public class Main { static class Student { String studentName; int[] studentRank; public Student(String studentName, int[] studentRank) { this.studentName = studentName; this.studentRank = studentRank; } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); Map<String, Integer> subjectRankIndexMap = new HashMap<>(); for (int i = 0; i < m; i++) { subjectRankIndexMap.put(sc.next(), i); } List<Student> students = new ArrayList<>(); for (int i = 0; i < n; i++) { String name = sc.next(); int[] rank = new int[m + 1]; int scoreSum = 0; for (int j = 0; j < m; j++) { rank[j] = sc.nextInt(); scoreSum += rank[j]; } rank[m] = scoreSum; students.add(new Student(name, rank)); } int rankIdx = subjectRankIndexMap.getOrDefault(sc.next(), m); students.sort( (a, b) -> a.studentRank[rankIdx] != b.studentRank[rankIdx] ? b.studentRank[rankIdx] - a.studentRank[rankIdx] : a.studentName.compareTo(b.studentName)); String result = students.stream() .map(student -> student.studentName) .collect(Collectors.joining(" ")); System.out.println(result); } }
#华为od##华为od题库##华为OD##华为OD机试真题##华为#