60求教

B2095 白细胞计数

gaoxijun20140828 @ 2024-11-30 00:07:34

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,maxi=0,mini=0;
    cin>>n;
    double cha=0,n1[n+1],min1=10000000,max1=-1,total=0;
    for(int i=1;i<=n;i++){
        cin>>n1[i];
    }
    for(int i=1;i<=n;i++){
        if(n1[i]<min1){
            min1=n1[i];
        }
        else if(n1[i]>max1){
            max1=n1[i];
        }
    }
    for(int i=1;i<=n;i++){
        if(n1[i]==max1){
            maxi=i;
        }
        else if(n1[i]==min1){
            mini=i;
        }
    }
    n1[maxi]=0;
    n1[mini]=0;
    for(int i=1;i<=n;i++){
        total+=n1[i];
    }
    printf("%.2f",total/(n-2));
    double min2=-1000000;
    for(int i=1;i<=n-2;i++){
        if(abs(n1[i])-total/(n-2)>min2){
            min2=abs(n1[i])-total/(n-2);
        }
    }
    printf(" %.2f",min2);
}

by Zyhx @ 2024-11-30 03:09:25

我先问问你

  n1[maxi]=0;
    n1[mini]=0;
    for(int i=1;i<=n;i++){
        total+=n1[i];
    }
    printf("%.2f",total/(n-2));
    double min2=-1000000;
    for(int i=1;i<=n-2;i++){
        if(abs(n1[i])-total/(n-2)>min2){
            min2=abs(n1[i])-total/(n-2);
        }
    }

这一串的意义是什么,我懂这个for循环的i<=n-2的意思,就是你想去掉两个最大最小,但是你没办法控制最大最小一定在n-1和n啊,你可以先求n1不去最大最小的平均值,再去掉最大最小求平均值,最后输出就行了

for(register int i=1;i<=n;++i) sum1+=a[i]; //累加
    sum1/=n; //求不去最大最小平均 
    for(register int i=1;i<=n;++i){
        if(a[i]>maxn) maxn=a[i],sign1=i;
        if(a[i]<minn) minn=a[i],sign2=i;//求最大最小并记录位置 
    }a[sign1]=0; a[sign2]=0;//去掉最大最小 
    for(register int i=1;i<=n;++i) sum2+=a[i];//累加 
    sum2/=(n-2);//求去掉最大最小平均值 
    printf("%.2lf %.2lf",sum2,abs(sum1-sum2));//输出 

by gaoxijun20140828 @ 2024-11-30 09:46:27

谢谢大佬,懂了


by Westbrook_ @ 2024-11-30 13:44:31

#include<bits/stdc++.h>
using namespace std;
double a[310];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a+1,a+n+1);
    double sum=0;
    for(int i=2;i<n;i++){
        sum+=a[i];
    }
    printf("%.2lf",sum/(n-2));
    cout<<" ";
    printf("%.2lf",abs(max(abs(a[n-1]-sum/(n-2)),abs(a[2]-sum/(n-2)))));
}

@gaoxijun20140828


by Westbrook_ @ 2024-11-30 13:45:36

@gaoxijun20140828 精华在最后一行,注意分类讨论


|