沙发!
2026-04-16 18:09:38
发布于:北京
12阅读
0回复
0点赞
代码:
#include <vector> // 数组
#include <iostream> // 普通输入输出
#include <cstdio> //printf输出1位小数
using namespace std;
int ans1 = 0,ans2 = 0,ans3 = 2.1 * 1e9; // 初始化
int main() {
int n;
cin >> n;
vector<int> g1,g2,g3; // g1是最小值,g2中间值,g3最大值
for(int i = 0;i < n;i++) { // n轮射击
int a,b,c,s1,s2,s3;
cin >> a >> b >> c;
s1 = min(min(a,b),c);
s3 = max(max(a,b),c);
s2 = a + b + c - s1 - s3;
g1.push_back(s1);
g2.push_back(s2);
g3.push_back(s3);
}
for(int i : g1) {
ans1 = max(ans1,i); // 计算
}
for(int i : g2) {
ans2 += i; // 计算
}
for(int i : g3) {
ans3 = min(ans3,i); // 计算
}
cout << ans3 << ' ' << ans1 << ' ';
printf("%.1lf",ans2 * 1.0 / n); // 输出一位小数
return 0; // end
}
其实不难,就是每次把最大、中间、最小值存一下,最后一起判断即可
而且甚至不用数组,直接判断也可以为啥我写完了才发现
#include <iostream>
#include <cstdio>
using namespace std;
int ans1 = 0,ans2 = 0,ans3 = 2.1 * 1e9;
int main() {
int n;
cin >> n;
for(int i = 0;i < n;i++) {
int a,b,c,s1,s2,s3;
cin >> a >> b >> c;
s1 = min(min(a,b),c);
s3 = max(max(a,b),c);
s2 = a + b + c - s1 - s3;
ans1 = max(ans1,s1);
ans2 += s2;
ans3 = min(ans3,s3);
}
cout << ans3 << ' ' << ans1 << ' ';
printf("%.1lf",ans2 * 1.0 / n);
return 0;
}
ok,两个代码都可以ac掉
谢谢观看 请给个赞
全部评论 3
e
2026-04-16 来自 北京
0啊啊啊啊啊我好***
2026-04-16 来自 北京
0其实我写完第一份代码才知道可以不用数组。。。
2026-04-16 来自 北京
0







有帮助,赞一个