luogu-B2125 最高分数的学生姓名

luogu-B2125 最高分数的学生姓名

GESP三级练习,字符串练习(C++三级大纲中6号知识点,字符串),难度★★☆☆☆。

luogu-B2125 最高分数的学生姓名

题目要求

题目描述

输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。

输入格式

第一行输入一个正整数 NNN100N \le 100),表示学生人数。

接着输入 NN 行,每行包括一个整数和一个字符串,用空格分开,代表分数姓名。

分数是一个非负整数,且小于等于 100100

姓名为一个连续的字符串,中间没有空格,长度不超过 2020

数据保证所有同学的姓名都不同,而且最高分只有一位同学。

输出格式

获得最高分数同学的姓名。

输入输出样例 #1

输入 #1

5
87 lilei
99 hanmeimei
97 lily
96 lucy
77 jim

输出 #1

hanmeimei

说明/提示

hanmeimei 的分数最高 9999 分。


题目分析

解题思路

  1. 读取学生人数N
  2. 初始化最高分数为-1,最高分学生姓名为空字符串
  3. 循环N次,每次:
    • 读取当前学生的分数和姓名
    • 如果当前分数大于最高分:
      • 更新最高分
      • 更新最高分学生姓名
  4. 输出最高分学生姓名

复杂度分析:

  • 时间复杂度为 O(n)O(n),其中n为学生人数
  • 空间复杂度为 O(1)O(1),只需要存储最高分和对应姓名

{% include custom/custom-post-content-inner.html %}


示例代码

#include<iostream>
#include<string>

int main() {
    // 读取学生人数
    int n;
    std::cin >> n;
    
    // 初始化最高分数为-1,最高分学生姓名为空
    int max = -1;
    std::string max_name;
    
    // 循环读取每个学生的分数和姓名
    for (int i = 0; i < n; i++) {
        int point;          // 存储当前学生分数
        std::string name;   // 存储当前学生姓名
        std::cin >> point >> name;
        
        // 如果当前分数高于最高分,更新最高分和对应学生姓名
        if (point > max) {
            max = point;
            max_name = name;
        }
    }
    
    // 输出最高分学生的姓名
    std::cout << max_name;
    return 0;
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on