2024年华为OD机试真题-智能成绩表

华为OD机试真题-智能成绩表-2024年OD统一考试(D卷)

题目描述:

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

输入描述:

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

第2行输入m个科目名称,彼此之间用空格隔开。科目名称只由英文字母构成,单个长度不超过10个字符。科目的出现顺序和后续输入的学生成绩一一对应。不会出现重复的科目名称。

第3行开始的n行,每行包含一个学生的姓名和该生m个科目的成绩(空格隔开),学生不会重名。学生姓名只由英文字母构成,长度不超过10个字符。成绩是0~100的整数,依次对应第2行中输入的科目。

第n+2行,输入用作排名的科目名称。若科目不存在,则按总分进行排序。

输出描述:

输出一行,按成绩排序后的学生名字,空格隔开。成绩相同的按照学生姓名字典顺序排序。

补充说明:

 收起

示例1

输入:

3 2
yuwen shuxue
fangfang 95 90
xiaohua 88 95
minmin 100 82
shuxue

输出:

xiaohua fangfang minmin

说明:

按shuxue成绩排名,依次是xiaohua、fangfang、minmin

示例2

输入:

3 2
yuwen shuxue
fangfang 95 90
xiaohua 88 95
minmin 90 95
zongfen

输出:

fangfang minmin xiaohua

说明:

排序科目不存在,按总分排序,fangfang和minmin总分相同,按姓名的字典顺序,fangfang排在前面

解题思路:考察矩阵排序,使用数组和排序处理,基础题。

Java解法:

import java.util.*;
 
public class Main {
    public static String standard;
    static class Student implements Comparable<Student>{
        String name;
        Map<String,Integer> projects;
        int tot =0;
 
        public Student(String name){
            this.name = name;
            projects = new HashMap<>();
        }
        public void add(String project, int score ){
            projects.put(project,score);
            tot += score;
        }
        @Override
        public int compareTo(Student o){
            int p0 = tot , p1 =o.tot;
            if(projects.containsKey(standard)){
                p0=projects.get(standard);
                p1=o.projects.get(standard);
            }
 
            if(p0 != p1) return p1-p0;
            else
                return name.compareTo(o.name);
        }
    }
 
 
 
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n =sc.nextInt();
        int m =sc.nextInt();
        sc.nextLine();
        String[] projects = sc.nextLine().split(" ");
        List<Student> students = new ArrayList<>();
 
        for(int i=0 ; i<n ; i++){
            String name=sc.next();
            Student student=new Student(name);
            for(int j=0 

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

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

2024年OD统一考试(D卷),最新最完整题库。 收录130+道真题,提供解题思路,Java/Python/C++三种答案源码。

全部评论
学到了
1
送花
回复 分享
发布于 06-30 18:38 江苏
华为OD机考题库,最新、最全,欢迎订阅和交流~
点赞
送花
回复 分享
发布于 06-30 18:38 北京
秋招专场
校招火热招聘中
官网直投
od武汉/成都可捞
点赞
送花
回复 分享
发布于 07-01 15:14 北京

相关推荐

先介绍一下楼主bg:24届普通一本,计科专业,秋招被刷,在春招时通过boss直聘第一次了解到OD,然后加上hr3.25加上hr微信,他只发了图一的题库给我,我在牛客上刷华为机试题目,100多道,大概是刷了90道左右4.12第一次催我机试,并且没有告知不能提前机试4.16告诉我考的是D卷的题,不是牛客上的华为机试的题,让我重新开始刷4.26第二次催我机试5.21第三次催机试6.4配置机考6.5机试三道题1.小明给小朋友身高排序2.出租车司机计程表没有4,求真实支付金额3.文本统计第一题用Arrays.sort自定义排序解决,第二道就是十进制换九进制,第三道是正则表达式拼了很久拼出来的,最后总共用时100min左右,中途家里人打了个电话过来,因为在考试直接挂了,手机监控弹了个监控中断,要求点击确认的提示框,忙着敲代码没注意看,考完了才发现,后续跟hr说了,对方也说没多大问题6.6出成绩,400分,但是因为电话的事情判定有作弊行为,hr说资面说清楚就行,没什么大问题6.9开始有意无意暗示我不是目标院校(四电四邮+985+部分211),通过几率不大,让我做好后手准备(甚至用出了面试也分通过和不通过这种话术,问题是我现在连约面都没有,而且按这个逻辑机试也分通过和不通过,那干嘛还一直让我考)6.17我第一次得知应届生不能提前机试,我去问hr我的成绩是不是作废,他说有些部门接受提前机试的成绩6.18告诉我以前不管这些,是最近开始才限制不能提前机试
查看3道真题和解析 投递华为等公司10个岗位
点赞 评论 收藏
分享
6 8 评论
分享
牛客网
牛客企业服务