用打擂台变量记录当前最高分,初值取 0 以兼顾成绩非负和 n=0 的空序列。
OJ: roj
题目 ID: 1062
难度:入门
标签:入门输入输出python
创建: 2026-09-29 16:46
更新: 2026-10-04 23:49
题目描述
孙老师想知道《计算概论》期中考试的最高分。输入第一行是人数 0。
样例输入:5 / 85 78 90 99 60;样例输出:99。
思路
用一个变量打擂台记录当前最高分,初值取
参考代码
Python 版:
python
#!/usr/bin/env python3
# Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
# rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
# rainboy的学习导航网站: https://idx.roj.ac.cn
# create_at: 2026-09-29 16:46
# update_at: 2026-10-04 10:11
import sys
def solve() -> None:
data = iter(map(int, sys.stdin.buffer.read().split()))
n = next(data) # 人数 n 可以为 0,此时没有成绩
scores = (next(data) for _ in range(n)) # 顺序消费恰好 n 个成绩,惰性产出、不建中间列表
print(max(scores, default=0)) # 成绩非负,空序列的最高分按 0 计
if __name__ == "__main__":
solve()C++ 版(同一算法):
cpp
/**
* Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
* rbook: -> https://rbook.roj.ac.cn https://rbook2.roj.ac.cn
* rainboy的学习导航网站: https://idx.roj.ac.cn
* create_at: 2026-10-04 23:49
* update_at: 2026-10-04 23:49
*/
// roj 1062 最高的分数
// 打擂台扫描:初值 0,读到一个成绩就更新当前最高分;n = 0 时无人考试,输出 0。
#include <cstdio>
typedef long long ll;
ll n; // 参加考试的人数,可以为 0
ll cur_score; // 当前读到的成绩
ll best; // 打擂台变量:到目前为止的最高分,初值 0(成绩非负,不会被真实成绩超过)
void solve() {
scanf("%lld", &n);
best = 0;
for (ll i = 1; i <= n; i++) {
scanf("%lld", &cur_score);
if (cur_score > best) { // 只有遇到更高的成绩才更新擂台
best = cur_score;
}
}
printf("%lld\n", best);
}
int main() {
solve();
return 0;
}