代码记录,有关algorithm函数库的思维使用:
这个函数库里面有许多的方便函数,下面是转载别人的文章:
这个就是转载自别人的东西
接下来是一个洛谷上面的普及的题目:
代号:P5738;
下面是我自己打的代码:
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
float a[100];
float b[20];
using namespace std;
int main() {
int m, n;
cin >> m >> n;
for (int i = 0; i < m; i++) {
float sum = 0;
for (int k = 0; k < n; k++) {
cin >> b[k];
}
sort(b, b + n);
for (int k = 1; k < n - 1; k++) {
sum += b[k];
}
a[i] = (sum) / (n - 2);
}
sort(a, a + m);
printf("%.2f", a[m - 2]);
return 0;
}
在编译的时候除了问题,就是在最后的时候一直在给一个数组排序,然后导致运行时间过长,然后就WA了,现在看了一个大佬的做法,就是一个替换的思想,先定义一个所谓的最大的值,给予一个空间,然后就是当的到的平均数比它打的时候进行替换,这样就可以节省空间和运行时间:
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
float b[20];
using namespace std;
int main() {
int m, n;
float max = 0, tmp = 0;
cin >> m >> n;
for (int i = 0; i < m; i++) {
float sum = 0;
for (int k = 0; k < n; k++) {
cin >> b[k];
}
sort(b, b + n);
for (int k = 1; k < n - 1; k++) {
sum += b[k];
}
tmp = (sum) / (n - 2);
if (tmp > max)max = tmp;
}
printf("%.2f", max);
return 0;
}