【最新华为OD机试E卷】智能成绩表(100分)
🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员
💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历
✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解
🧩 大部分包含
Python
/C
/Javascript
/Java
/Cpp
多语言代码👏 感谢大家的订阅➕ 和 喜欢💗 和手里的小花花🌸
最新华为OD机试E卷全、新、准,题目覆盖率达 95% 以上,其中D卷题目全部支持在线评测,E卷题目正在持续上线中~
最新华为OD机试专栏: https://www.nowcoder.com/creation/manager/columnDetail/MgbyJj
🎀关于华为OD
- ✨华为OD的概念 华为的大部分社会招聘采用了被称为OD(Outsourcing Dispatch)模式,这是一种与德科共同进行的招聘方式。在这种模式下,被招聘的员工通常被定级在13至17级,这些员工被视为华为的储备人才。华为每年会从这些OD项目中选拔表现出色的员工,并将他们转为正式员工。
- ⌚️华为 OD 应聘流程
-
第一步:投递简历
- 提供姓名、邮箱、手机号、身份证号,用于锁定,所以投递前需要考虑清楚,投到项目组之后,一般不会转给另一个项目的 HR 了,也就是被锁定。
-
第二步:机试
- 3 道算法题,400 分满分,一般 1 个月的准备时间,华为机试必须要 150 分以上,没有过半年之后才能参加下一次考试。
-
第三步:技术面
- 2 轮技术面试。
-
第四步:HR 与主管面试
-
第五步:录用,发 offer
-
🍓OJ题目截图
🎁 智能成绩表
问题描述
K小姐是一位教师,她需要一个学生成绩管理系统来帮助她对学生的考试成绩进行排名。系统需要支持按照总分或者单科成绩进行排序。你能帮帮她吗?
输入格式
第一行包含两个正整数 和 ,分别表示学生人数和科目数量。()
第二行包含 个由空格隔开的科目名称。科目名称只由英文字母构成,单个长度不超过 个字符。科目的出现顺序和后续输入的学生成绩一一对应,不会出现重复的科目名称。
接下来的 行,每行包含一个学生的姓名和该生 个科目的成绩(空格隔开)。学生姓名只由英文字母构成,长度不超过 个字符。成绩是 到 的整数,依次对应第二行输入的科目。
最后一行输入一个字符串,表示用作排名的科目名称。若该科目不存在,则按总分进行排序。
输出格式
输出一行,表示按成绩排序后的学生姓名,用空格隔开。如果有成绩相同的情况,则按照学生姓名的字典序进行排序。
样例输入
3 2
yuwen shuxue
fangfang 95 90
xiaohua 88 98
minmin 100 82
shuxue
样例输出
xiaohua fangfang minmin
样例输入
3 2
yuwen shuxue
fangfang 95 90
xiaohua 88 95
minmin 90 95
zongfen
样例输出
fangfang minmin xiaohua
数据范围
- 科目名称和学生姓名均只由英文字母构成,长度不超过 个字符。
- 成绩是 到 的整数。
题解
自定义排序
在这个问题中,需要实现一个简单的学生成绩管理系统。首先,要读取输入的信息,包括学生人数、科目数量、各个科目的名称以及每个学生的姓名和对应的成绩。根据用户指定的科目进行排序,如果指定的科目不存在,则按总分进行排序。
解决思路:
-
数据存储:我们可以使用一个列表来存储每个学生的信息,包括他们的姓名和各个科目的成绩。
-
计算总分:在对学生进行排序之前,我们需要计算每个学生的总分,以便在需要时使用。
-
排序逻辑:我们可以使用 Python 的内置排序功能,根据指定的科目或总分对学生进行排序。如果有多个学生的成绩相同,则按姓名字典序进行排序。
参考代码
# 引入所需模块
from typing import List, Tuple
def rank_students(n: int, m: int, subjects: List[str], scores: List[Tuple[str, List[int]]], rank_subject: str) -> List[str]:
# 创建一个字典以存储每个科目的索引
subject_index = {subject: index for index, subject in enumerate(subjects)}
# 如果指定的排名科目不存在,则使用总分进行排名
if rank_subject not in subject_index:
# 按照总分计算并排序
sorted_students = sorted(scores, key=lambda x: (-sum(x[1]), x[0]))
else:
# 获取指定科目的索引
subject_idx = subject_index[rank_subject]
# 按照指定科目的成绩进行排序
sorted_students = sorted(scores, key=lambda x: (-x[1][subject_idx], x[0]))
# 提取排序后的学生姓名并返回
return [student[0] for student in sorted_students]
# 示例输入处理与输出展示
if __name__ == "__main__":
n, m = map(int, input().split())
subjects = input().split()
scores = []
for _ in range(n):
data = input().split()
name = data[0]
grades = list(map(int, data[1:m+1]))
scores.append((name, grades))
rank_subject = input().strip()
# 调用函数并打印结果
result = rank_students(n, m, subjects, scores, rank_subject)
print(" ".join(result))
- Python
# 引入所需模块
from typing import List, Tuple
def rank_students(n: int, m: int, subjects: List[str], scores: List[Tuple[str, List[int]]], rank_subject: str) -> List[str]:
# 创建一个字典以存储每个科目的索引
subject_index = {subject: index for index, subject in enumerate(subjects)}
# 如果指定的排名科目不存在,则使用总分进行排名
if rank_subject not in subject_index:
# 按照总分计算并排序
sorted_students = sorted(scores, key=lambda x: (-sum(x[1]), x[0]))
else:
# 获取指定科目的索引
subject_idx = subject_index[rank_subject]
# 按照指定科目的成绩进行排序
sorted_students = sorted(scores, key=lambda x: (-x[1][subject_idx], x[0]))
# 提取排序后的学生姓名并返回
return [student[0] for student in sorted_students]
# 示例输入处理与输出展示
if __name__ == "__main__":
n, m = map(int, input().split())
subjects = input().split()
scores = []
for _ in range(n):
data = input().split()
name = data[0]
grades = list(map(int, data[1:m+1]))
scores.append((name, grades))
rank_subject = input().strip()
# 调用函数并打印结果
result = rank_students(n, m, subjects, scores, rank_subject)
print(" ".join(result))
- C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 100
#define MAX_M 10
#define MAX_NAME_LEN 11
// 学生结构体
typedef struct {
char name[MAX_NAME_LEN];
int *scores; // 动态分配的分数数组
} Student;
// 全局变量,用于排序比较
int rank_index;
int subject_count;
// 比较函数,用于qsort
int compare(const void *a, const void *b) {
const Student *studentA = *(const Student **)a;
const Student *studentB = *(const Student **)b;
if (studentA->scores[rank_index] != studentB->scores[rank_index]) {
return studentB->scores[rank_index] - studentA->scores[rank_index];
}
return strcmp(stud
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏给大家提供了华为2024最新华为OD-E/D卷的题目汇总和(Java/Cpp/Python)三语言解析 + 部分题目提供OJ在线评测