b964 - 1. 成績指標
題目描述
題目要求讀取一組學生分數,找出及格學生中的最低分數和不及格學生中的最高分數。如果找不到最低及格分數,則輸出 "worst case",如果找不到最高不及格分數,則輸出 "best case"。
解題思路
首先,讀取學生人數和每個學生的分數。然後,使用排序演算法(例如 std::sort)對分數進行排序。排序後,從排序後的陣列中找出不及格的最高分數和及格的最低分數。如果找不到及格的最低分數,輸出 "worst case",如果找不到不及格的最高分數,輸出 "best case"。
複雜度分析
- 時間複雜度: O(n log n) (主要來自排序演算法)
- 空間複雜度: O(n) (用於儲存學生分數)
程式碼
#include <iostream>
#include <algorithm>
using namespace std;
int main(){
int p=0,max=101,min=(-1);
bool max1=false,min1=false;
while(cin >> p){
int g[p];
for(int i=0;i<p;i++){
cin >> g[i];
}
sort(g,g+p);
for(int i=0;i<p;i++){
if(g[i]<60){
if(g[i]>min){
min=g[i];
min1=true;
}
}
else if(g[i]>=60){
if(g[i]<max){
max=g[i];
max1=true;
}
}
cout << g[i] ;
if(i!=p-1){
cout << " ";
}
}
cout << endl;
if(min1==true){
cout << min << endl;
}
else{
cout << "best case" << endl;
}
if(max1==true){
cout << max << endl;
}
else{
cout << "worst case" << endl;
}
max=101;
min=(-1);
max1=false;
min1=false;
}
}