题解
2026-05-13 21:22:19
发布于:浙江
9阅读
0回复
0点赞
代码:(主要侧重于基础)
用三个数组来储存最大值和最小值和剩下的中间值
最大值为:
处理方法:
int q,w,e;//前提条件
a[i]=max(q,max(w,e));
//并非a[i]=max(q,w,e);
最小值为
处理方法:
int q,w,e;//前提条件
b[i]=min(q,min(w,e));
//并非a[i]=min(q,w,e);
中间值为
处理方法:(难点)
int q,w,e;//前提条件
//首先我们已经知道a[i]把最大值取了
//然后我们已经知道b[i]把最小值取了
//最终只要判断c[i]是否与a[i]和b[i]不同
c[i]=q;//先把c[i]赋值
if(c[i]==a[i]||c[i]==b[i]){c[i]=w;}//判断是否与a[i]和b[i]相同,若相同,把c[i]替值
if(c[i]==a[i]||c[i]==b[i]){c[i]=e;}//再次判断是否与a[i]和b[i]相同,若相同,把c[i]替值
//最终就能得到c[i]
用cnt储存中的最小值:
处理方法:
int n;//前提条件
int cnt=1000;//前提条件
for(int i=1;i<=n;i++){cnt=min(cnt,a[i]);}//求出最小值
cout<<cnt;//输出
用res储存中的最大值:
处理方法:
int n;//前提条件
int res=0;//前提条件
for(int i=1;i<=n;i++){res=max(res,b[i]);}//求出最大值
cout<<res;//输出
用sum储存中的平均值:
处理方法:
int n;//前提条件
double sum=0;//前提条件
for(int i=1;i<=n;i++){sum+=c[i];}//先求出中间值的总成绩
printf("%.1f",sum/n)//输出
最后把这些核心代码块结合一下,就可以写出代码了!
:
#include<bits/stdc++.h>
using namespace std;
int a[1000],b[1000],c[1000];
int main(){
int n;cin>>n;
for(int i=1;i<=n;i++){
int q,w,e;cin>>q>>w>>e;
a[i]=max(q,max(w,e));
b[i]=min(q,min(w,e));
c[i]=q;
if(a[i]==c[i]||c[i]==b[i]){
c[i]=w;
}
if(a[i]==c[i]||c[i]==b[i]){
c[i]=e;
}
}
double sum=0;int cnt=101,res=0;
for(int i=1;i<=n;i++){
cnt=min(cnt,a[i]);
res=max(res,b[i]);
sum+=c[i];
}
cout<<cnt<<" "<<res<<" ";
printf("%.1f",sum/n);
}
个人 be like:



希望:




都看到这了,能不能点个赞呢?




这里空空如也





有帮助,赞一个