【华为OD】C卷真题 100%通过:智能成绩表 JS代码实现 【思路+代码】

  C++代码实现:

【华为OD】C卷真题 100%通过:智能成绩表 C++代码实现-CSDN博客

python代码实现:

【华为OD】C卷真题 100%通过:智能成绩表 Python代码实现 【思路+代码】-CSDN博客

Java代码实现:

【华为OD】C卷真题 100%通过:智能成绩表 java代码实现 【思路+代码】-CSDN博客

C语言代码实现:

【华为OD】C卷真题 100%通过:智能成绩表 C语言代码实现 【思路+代码】-CSDN博客

题目描述:

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

输入描述

第1行输入两个整数,学生人数n和科目数量m。0 第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排在前面

     4                                                          
                                                            
              +---+                                               
              |   |                                               
              |   | 3                       3                     
              |   |                                               
              |   +---+                   -----                  + ---+
              |       |                   |   |                  +     |----|3
  +         2 |       |                 2 |   |     2            +     |    |
  +           |       |                   |   |                  +     |    |
  +       +---+       |               ----+   |   +---+          +     |    |
  +       |           |               |       |   |   |          +     |    |    ++++++|
  +     1 |           | 1           1 |       | 1 |   | 1        +     |    |    |     |
  +       |           |               |       |   |   |          +     |    |    |     |
  +   +---+           +---+       +---+       +---+   +---+      +     |    |    |     |
  +   |                   |       |                       |      +     |    |    |     |
  + 0 |                   | 0   0 |                       | 0    +     |    |    |     |
  +   |                   |       |                       |      +     |    |    |     |
  +---+                   +-------+                       +---+  +  +--- |    |+   |     |++
                                                                      
    0   1   2   3   4   5   6   7   8   9  10  11  12  13  14   15  16  17  18
 

题目解析:

        按规则来处理就行,核心是自定义排序函数

JS语言代码实现:

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

let g_index = 0;

function compare1(a, b) {
    if (b.scores.data[g_index] !== a.scores.data[g_index]) {
        return b.scores.data[g_index] - a.scores.data[g_index];
    } else {
        return a.name.localeCompare(b.name);
    }
}

const main = async () => {
    const input1 = (await readline()).trim().split(' ').map(Number);
    const n = input1[0];
    const m = input1[1];

    const us = new Map();
    const input2 = (await readline()).trim().split(' ');
    for (let i = 0; i < m; ++i) {
        us.set(input2[i], i + 1);
    }

    const people = [];
    for (let i = 0; i < n; ++i) {
        const input3 = (await readline()).trim().split(' ');
        const name = input3[0];
        const scores = input3.slice(1).map(Number);
        const total = scores.reduce((acc, cur) => acc + cur, 0);
        people.push({ name, scores: { size: m + 1, data: [total, ...scores] } });
    }

    const target = (await readline()).trim();
    for (let i = 0; i < m; ++i) {
        if (target === input2[i]) {
            g_index = us.get(target);
            break;
        }
    }
    people.sort(compare1);
    for (let i = 0; i < n; ++i) {
        process.stdout.write(people[i].name + " ");
    }
    console.log();
};

main();

【华为OD】C卷真题 100%通过:智能成绩表 JS代码实现 【思路+代码】_第1张图片

你可能感兴趣的:(杂谈,华为od,c语言,javascript,java,c++,python,码蚁软件)