90分求调

B2095 白细胞计数

kaenoly @ 2024-11-07 16:19:27


#include<bits/stdc++.h>
using namespace std;
int n,ma,mb;
double a[305],s,ave;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    ma=mb=1;
    s=a[1];
    for(int i=2;i<=n;i++){
        s+=a[i];
        if(a[i]>a[ma]){
            ma=i;
        }
        if(a[i]<a[mb]){
            mb=i;
        }
    }
    ave=(s-a[ma]-a[mb])/(n-2);
    double x[305],t=0;
    for(int i=1;i<=n;i++){
        if(i!=ma&&i!=mb){
            x[i]=abs(a[i]-ave);
        }
    }                          
    for(int i=1;i<=n;i++){
        if(x[i]>t){
            t=x[i];
        }
    }
    printf("%.2lf %.2lf",ave,t);
    return 0;
}

by call_of_silence @ 2024-11-07 16:24:49

@kaenoly 定义 double 数组 x[305] 放到主函数外面吧,在主函数里面定义可能里面不为空(你也可以手动清空)


#include<bits/stdc++.h>
using namespace std;
int n,ma,mb;
double a[305],s,ave;
double x[305],t=0;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    ma=mb=1;
    s=a[1];
    for(int i=2;i<=n;i++){
        s+=a[i];
        if(a[i]>a[ma]){
            ma=i;
        }
        if(a[i]<a[mb]){
            mb=i;
        }
    }
    ave=(s-a[ma]-a[mb])/(n-2);

    for(int i=1;i<=n;i++){
        if(i!=ma&&i!=mb){
            x[i]=abs(a[i]-ave);
        }
    }                          
    for(int i=1;i<=n;i++){
        if(x[i]>t){
            t=x[i];
        }
    }
    printf("%.2lf %.2lf",ave,t);
    return 0;
}

by kaenoly @ 2024-11-07 16:28:03

@call_of_silence 谢谢


|