为什么一直不能过啊

B2095 白细胞计数

13232169210yjh @ 2023-01-11 19:54:10

int swap(double a[],int count){
    int i,j;
    double c;
    for(i=0;i<count-1;i++){
        for(j=0;j<count-1;j++){
            if(a[j]<a[j+1]){
                c=a[j];a[j]=a[j+1];a[j+1]=c;
            }
        }
    }
    return 0;
}

int main(){
    int i,a,c;
    scanf("%d",&a);
    double b[a],sum=0,ext=0,app=0;
    for(i=0;i<a;i++){
        scanf("%lf",&b[i]);
    }
    swap(b,a);
    for(i=1;i<a-1;i++){
            sum+=b[i];
    }

    sum/=a-2;        
    for(i=1;i<a-1;i++){
        ext=abs(b[i]-sum);
        if(app<ext){
            app+=ext;
            ext=app-ext;
            app-=ext;
        }
    }
    printf("%.2lf %.2lf",sum,app);
}

我想问一下我这里错哪里了 为什么一直不过啊


by dengyujie2020 @ 2023-01-11 20:20:58

我先贴一下我的代码

AC Code

#include<iostream>
#include<cmath>
#include<cstdio> 
using namespace std;
float a[350],ans1,ans2,t,n;
int i,maxn,minn;
int main()
{
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>a[i];
    maxn=minn=1;t=0;
    for(i=1;i<=n;i++)
    {
        if(a[minn]>a[i])
        minn=i;
        if(a[maxn]<a[i])
        maxn=i;
        t+=a[i];
    }
    t=t-a[maxn]-a[minn];
    ans1=t/(n-2);
    ans2=0;
    for(i=1;i<=n;i++)
    {
        if(i!=maxn&&i!=minn)
        {
            t=abs(ans1-a[i]);
            if(t>=ans2)
            ans2=t;
        }
    }
    printf("%.2f %.2f",ans1,ans2);
    return 0; 

 }

by dengyujie2020 @ 2023-01-11 20:26:02

让我给你精修一下

奇怪的地方还是有很多的(悲

码风也有点清奇

验证码:67nb祭


by dengyujie2020 @ 2023-01-11 20:49:27

我尽力了 我是蒟蒻 我排序看不懂 我AFO了

#include<iostream>
#include <stdio.h>
#include <stdlib.h>//这是什么蒟蒻看不懂
int i,a,c;
double b[305],sum,ext,app;//定义在全局变量里,默认为零 特别是数组,一定要这样做!!
void swap(double a[],int count){
    int i,j;
    double c;
    for(i=0;i<=count-1;i++){//目标位置
        for(j=0;j<=i;j++){//交换下标
            if(a[j]<a[j+1]){
                c=a[j];a[j]=a[j+1];a[j+1]=c;
            }
        }
    }
}

int main(){

    scanf("%d",&a);
    for(i=0;i<a;i++){
        scanf("%lf",&b[i]);
    }
    swap(b,a);//其实这里可以改名成s_ort swap不准确
    for(i=1;i<a-1;i++){
        sum+=b[i];
    }
    sum=sum/((a-2)*1.0);        
    for(i=1;i<a-1;i++){
        ext=abs(b[i]-sum);
        if(app<ext)
            app=ext;//正常点写,不要花里胡哨的
    }
    printf("%.2lf %.2lf",sum,app);
}

by 13232169210yjh @ 2023-01-12 09:17:41

@dengyujie2020 那个《stdlib.h》是abs函数的头文件 我看了,你给我改的代码,其中不同的是 你的改的中多了一个头文件 我在我原来的代码中也加了那个头文件,其他的不改动,结果跟你改动后的一样,但是还是不能AC 另一个我想问一下那个头文件是干嘛的为什么一加就接近AC而我之前不加的时候就一直是10分


by 13232169210yjh @ 2023-01-12 13:05:47

@dengyujie2020 大佬,我解出来了 我之前的代码没有问题 就是缺少你加的那个头文件 你能跟我说一下那个头文件是干嘛的? 为什么加就可以过,不加就不能过啊


by dengyujie2020 @ 2023-01-12 22:42:28

@13232169210yjh emm iostream 是c++里标准输入输出要加的头文件。


by dengyujie2020 @ 2023-01-12 22:43:05

我一般是直接加的,或者写万能头。我也没在意这件事,我不懂(悲 帮不了您了


by 13232169210yjh @ 2023-01-13 13:49:32

@dengyujie2020 、 好吧,总之还得谢谢你


|