输出最高分数的学生姓名 (两种写法-结构体&map)

 输出最高分数的学生姓名

 计蒜客 - T1145 

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

输入格式

第一行输入一个正整数 N(N≤100)N(N≤100),表示学生人数。接着输入 NN 行,每行格式如下:

分数 姓名

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

姓名为一个连续的字符串,中间没有空格,长度不超过 2020。
数据保证最高分只有一位同学。

输出格式

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

Sample Input

5
87 lilei
99 hanmeimei
97 lily
96 lucy
77 jim

Sample Output

hanmeimei

题意描述:给学生的成绩和学生的姓名,输出成绩最高的学生名字

解题思路:

AC1 我用的结构体,存学生成绩和姓名,对比成绩,再存成绩高的学生名字,输出即可

AC2 用map存学生姓名和成绩,然后比较成绩,把成绩高记录,并把相对应的学生名字存入新的字符串 输出最高分的学生姓名即可

AC1:

#include<bits/stdc++.h>
using namespace std;
typedef struct student
{
	char name[50];
	int grade;
}STUDENT;
int main(void)
{
	STUDENT stu,first;
	int n,i,grade;
	cin>>n;
	first.grade = -1;
	for(i=0;i<n;i++)
	{
		cin>>stu.grade>>stu.name;
		if(stu.grade>first.grade)
			first=stu;
    }
	cout<<first.name<<endl;
	return 0;
 } 

AC2:

#include<stdio.h>
#include<map>
#include<iostream>
using namespace std;
int main(void)
{
	map<string,int>x;
	int n,m,max=-99;
	char a[110];
	scanf("%d",&n);
	string s;
	for(int i=1;i<=n;i++)
	{
		cin>>m>>a;
		x[a]=m;
		if(x[a]>max)
		{
			max=x[a];
			s=a;
		}	
	}
	cout<<s<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_58245389/article/details/120044763
今日推荐