华为OD机试统一考试 - 智能成绩表

题目描述

小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗?

输入描述

第 1 行输入两个整数,学生人数 n 和科目数量 m。

  • 0 < n < 100
  • 0 < m < 10

第 2 行输入 m 个科目名称,彼此之间用空格隔开。

  • 科目名称只由英文字母构成,单个长度不超过10个字符。
  • 科目的出现顺序和后续输入的学生成绩一一对应。
  • 不会出现重复的科目名称。

第 3 行开始的 n 行,每行包含一个学生的姓名和该生 m 个科目的成绩(空格隔开)

  • 学生不会重名。
  • 学生姓名只由英文字母构成,长度不超过10个字符。
  • 成绩是0~100的整数,依次对应第2行种输入的科目。

第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排在前面

题目解析

本题是一道排序题。难度在于排序规则是动态的,不是固定的。

本题要求按照最后一行输入的科目的分数进行排序,如果对应科目不存在,则按照总分进行排序。

我的解题思路是:

首先,定义一个排名要素数组rank,分别记录各科成绩以及总分,即该排名要素数组rank的长度为 m + 1。

  • 第rank[0]~rank[m-1]上,记录的是第二行输入科目顺序对应科目分数。
  • 第rank[m]上,记录的是所有科目的总分。

然后,定义一个有效要素索引(即最终用于指定规则的排序要素的索引),比如:

  • 最后一行输入了shuxue,那么我就去第二行输入:yuwen shuxue,中去找对应出现序号为 1,那么有效要素

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2024华为OD机试卷题 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD 题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论
华为OD机试统一考试
点赞 回复 分享
发布于 2024-09-20 16:36 四川

相关推荐

10-20 11:11
辽宁大学 营销
点赞 评论 收藏
分享
渴望wlb的牛油果很...:直说卡第一学历不就行了 非得拐弯抹角
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务