【题目描述】
输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。
【输入】
第一行输入一个正整数N(N ≤ 100),表示学生人数。接着输入N行,每行格式如下:
分数 姓名
分数是一个非负整数,且小于等于100;
姓名为一个连续的字符串,中间没有空格,长度不超过20。
数据保证最高分只有一位同学。
【输出】
获得最高分数同学的姓名。
【输入样例】
5
87 lilei
99 hanmeimei
97 lily
96 lucy
77 jim
【输出样例】
hanmeimei
【源代码】
#include <iostream>
#include <string>
using namespace std;
int main()
{
int N;
cin >> N;
int score = 0;
string name = "";
int max_score = 0; // 最高分;
string ans = "";
for (int i = 0; i < N; i++)
{
cin >> score >> name;
if (score > max_score)
{
max_score = score; // 更新最高分;
ans = name;
}
}
cout << ans << endl;
return 0;
}
【map做法】
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{
int N;
cin >> N;
map<int, string> Map;
// 最高分与该人的名字为一一对应关系,且map对键值有排序功能,使用map.rbegin()返回一个迭代器,指向最高分;
int score = 0;
string name = "";
for (int i = 0; i < N; i++)
{
cin >> score >> name;
Map[score] = name; // 题目保证只有一个最高分,所以不用担心map的覆盖;
}
cout << Map.rbegin()->second << endl;
return 0;
}