1 条题解
-
0
【深基7.例9】最厉害的学生
解题思路
依次读入学生信息,比较总分;只有当前总分严格大于历史最高总分时才替换。
正确性说明
处理前 k 人后始终保存最高总分中最早出现者。更高分必须替换,同分保持原记录,因此最终满足两项要求。
易错点
同分不能替换;输出姓名与三科原成绩,而不是总分。
复杂度
时间 O(N),空间 O(1),姓名长度有常数上界。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; string best; int ba = 0, bb = 0, bc = 0, mx = -1; while (n--) { string s; int a, b, c; cin >> s >> a >> b >> c; if (a + b + c > mx) { mx = a + b + c; best = s; ba = a; bb = b; bc = c; } } cout << best << " " << ba << " " << bb << " " << bc << "\n"; return 0; }
- 1