经验总结:
需要找出最大值和最小值并删除,并且有可能分数是重复的,那么可以使用multiset,然后把multiset的两端点删除即可。
记:C++四舍五入函数:round()
C++代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
double g1 = 0,g2 = 0;
cin>>g2;
multiset<double> s;
for(int j=1;j<n;j++){
double num;
cin>>num;
if(num>=0&&num<=m){
s.insert(num);
}
}
s.erase(s.begin());//删除最小值
auto set_end = s.end();
set_end--;
s.erase(set_end); //删除最大值
for(auto it = s.begin();it!=s.end();it++){
g1 += *it;
}
g1 /= s.size();
cout<<round((g1+g2)/2)<<endl;
}
return 0;
}