逐个读取分数和姓名,仅在分数更高时更新最高分学生。
OJ: noi_openjudge
题目 ID: ch0109-02
难度:入门
标签:模拟最值python
日期: 2026-07-30 23:01
题意
输出唯一最高分学生的姓名。
思路
维护当前最高分和对应姓名。逐条读入时只有发现更高分数才更新,最终姓名即答案。
代码
cpp
#include <cstdio>
#include <cstring>
using namespace std;
int n;
int fen;
char name[1000];
int max=-1;
char t[1000];
int main(){
scanf("%d",&n);
int i,j;
for (i=1;i<=n;i++){
scanf("%d",&fen);
scanf("%s",t);
if( fen > max){
max = fen;
strcpy(name,t);
}
}
printf("%s\n",name);
return 0;
}复杂度
时间复杂度为
总结
只需最优记录时可边读取边更新,无需保存全部学生。
Python代码
python
student_count = int(input())
best_score = -1
best_name = ""
for _ in range(student_count):
score_text, name = input().split()
score = int(score_text)
if score > best_score:
best_score = score
best_name = name
print(best_name)C++代码
cpp
#include <cstdio>
#include <cstring>
using namespace std;
int n;
int fen;
char name[1000];
int max=-1;
char t[1000];
int main(){
scanf("%d",&n);
int i,j;
for (i=1;i<=n;i++){
scanf("%d",&fen);
scanf("%s",t);
if( fen > max){
max = fen;
strcpy(name,t);
}
}
printf("%s\n",name);
return 0;
}