d659 - 11727 - Cost Cutting
題目描述
題目描述了 XYZ 股份有限公司因金融海嘯需要削減支出,並決定裁掉薪水最高和最低的兩位員工。給定三位員工的薪水,要求找出不會被裁員的員工的薪水。
解題思路
題目要求找出三數中介數。程式碼直接使用一系列的 if-else 條件判斷來比較三個薪水,並找出中間值。雖然程式碼的邏輯是正確的,但可以簡化為先對三個數字進行排序,然後直接輸出中間的數字。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main(){
int n=0;
while(cin >> n){
int m[3][n];
for(int i=0;i<n;i++){
for(int j=0;j<3;j++){
cin >> m[j][i];
}
}
for(int j=0;j<n;j++){
if(m[0][j]>=m[1][j]&&m[1][j]>=m[2][j]){
cout << "Case " << j+1 << ": " << m[1][j] << endl;
}
else if(m[0][j]<=m[1][j]&&m[1][j]<=m[2][j]){
cout << "Case " << j+1 << ": " << m[1][j] << endl;
}
else if(m[2][j]>=m[0][j]&&m[1][j]>=m[2][j]){
cout << "Case " << j+1 << ": " << m[2][j] << endl;
}
else if(m[2][j]<=m[0][j]&&m[1][j]<=m[2][j]){
cout << "Case " << j+1 << ": " << m[2][j] << endl;
}
else if(m[0][j]>=m[1][j]&&m[2][j]>=m[0][j]){
cout << "Case " << j+1 << ": " << m[0][j] << endl;
}
else if(m[0][j]<=m[1][j]&&m[2][j]<=m[0][j]){
cout << "Case " << j+1 << ": " << m[0][j] << endl;
}
}
}
}