题解
最高分数
1 条题解
-
0
解题思路
题目给出 5 名同学的成绩,要找出最高的分数。这和"求 n 个数里的最大值"是同一个套路——打擂台。
两种写法都可以:
写法一:先读入第一个成绩当擂主,再循环读剩下 4 个成绩,谁大谁当擂主。 写法二:把最大值变量初始化为 0(因为成绩范围是 0≤a≤100,0 一定不会比真实成绩大),然后循环 5 次,每次读一个成绩就判断要不要更新最大值。
本题采用写法一,思路更直接:变量 mx 先等于第一个成绩,之后每读一个成绩 a,只要 a>mx 就把 mx 更新成 a。5 个数都读完,mx 就是最高分。
参考代码
#include <iostream> using namespace std; int main() { int a; // a:当前读入的一个成绩 cin >> a; // 读入第一个成绩 int mx = a; // mx:最高分,先让第一个成绩当擂主 for (int i = 2; i <= 5; i++) { // 再循环读剩下 4 个成绩 cin >> a; // 读入一个成绩 if (a > mx) { // 如果它比当前最高分还高 mx = a; // 更新最高分 } } cout << mx << endl; // 输出最高分 return 0; }复杂度分析
题目固定只有 5 名同学,循环次数固定为 4 次,不随输入变化,所以时间复杂度是 O(1)。空间上只用了 a、mx、i 三个变量,空间复杂度也是 O(1)。
- 1