ZeroJudge b964 題解

Ian Wen

成績指標

原 APCS 2016年 3月 第一題

題目敘述

一次考試中,於所有及格學生中獲取最低分數者最為幸運,反之,於所有不及格同學中,獲取最高分數者,可以說是最為不幸,而此二種分數,可以視為成績指標。

請你設計一支程式,讀入全班成績(人數不固定),請對所有分數進行排序,並分別找出不及格中最高分數,以及及格中最低分數。

當找不到最低及格分數,表示對於本次考試而言,這是一個不幸之班級,此時請你印出「worst case」;反之,當找不到最高不及格分數時,請你印出「best case」。

( 註:假設及格分數為 60 )。

解題思路

運用 vector 跟 sort() 排序分數,排序完以後照題目要求輸出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include<bits/stdc++.h> // 使用萬用標頭檔,才有 vector 可以用
using namespace std;

int main() {
int n;
cin >> n;
vector<int> scores(n); // 建立一個大小為 n 的 vector
for (int i=0; i<n; i++) {
cin >> scores[i]; // 輸入所有分數
}
sort(scores.begin(),scores.end()); // 用 sort() 快速排序好所有分數
int minscore=INT_MAX,maxscore=INT_MIN; // 維護最低及格分數與最高不及格分數
for (int i=0; i<n; i++) {
if (scores[i] < minscore && scores[i] >= 60) {
minscore = scores[i]; // 找到比當前最低及格分數更小的及格分數,修改當前最低及格分數
}
if (scores[i] > maxscore && scores[i] < 60) {
maxscore = scores[i]; // 找到比當前最高不及格分數更大的不及格分數,修改當前最高不及格分數
}
}
for (int i=0; i<n-1; i++) {
cout << scores[i] << " "; // 照順序輸出1 ~ n-2個數字,並在後面接上空白
}
cout << scores[n-1] << "\n"; // 輸出最後一個數字
if (maxscore != INT_MIN) { // 有找到至少一個不及格分數
cout << maxscore << "\n"; // 輸出最高不及格數字
} else {
cout << "best case\n"; // 沒找到任何不及格分數,輸出 best case
}
if (minscore != INT_MAX) { // 有找到至少一個及格分數
cout << minscore << "\n"; // 輸出最低及格數字
} else {
cout << "worst case\n"; // 沒找到任何及格分數,輸出 worst case
}

}
  • Title: ZeroJudge b964 題解
  • Author: Ian Wen
  • Created at : 2024-10-18 08:43:34
  • Updated at : 2024-10-18 08:44:13
  • Link: https://blog.ianwen.me/2024/10/18/ZeroJudge-b964/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
ZeroJudge b964 題解