代码改变世界

小Q系列之 最佳裁判

2016-12-12 20:45  HHFFZ  阅读(165)  评论(0编辑  收藏  举报

这个题需要注意一些数据条件

尤其是一些输入数据条件

#include<algorithm>
#include<stdio.h>
#include<math.h>
using namespace std;
int main()
{

    int n,m,i;
    float b[21],a[21];
    double s,k;
    m=21;
    while(scanf("%d",&n))
    {   if(n==0||n<5)//就这个条件特别坑   想了好久都没想到还要注意这个条件。
        break;
        s=0;
   for(i=0;i<n;i++)
        {
            scanf("%f",&b[i]);
a[i]
=b[i];//先把数字和序号存起来,为了以后不乱序号。 } sort(b,b+n);//排序。 for(i=1;i<n-1;i++) { s=b[i]+s; }s=s/(n-2);//去掉最大 和最小 求和 求平均数 for(i=0;i<n;i++) { b[i]=fabs(b[i]-s); } k=b[1]; for(i=1;i<n-1;i++) { if(b[i]<k) { k=b[i];//挨个减去平均值 求最小的绝对值。 } } for(i=0;i<n;i++) { a[i]=fabs(a[i]-s);用原来的序号依次减去平均值,, if(a[i]==k)与最小的相比,等于最小后 输出序号。 { printf("%d\n",i+1); break; } } } }