试题名称 算法提高 数字分组 语言 C++
排序加查找
#include<bits/stdc++.h>
#include<iostream>
using namespace std;
double cmp(double x,double y)
{
return x>y;
}
int main()
{
double a[10],b[9],c[9],sum[3],t,breakpoint1,breakpoint2;
int z=0,x=0,v=0;
for(int i=0;i<10;i++)
{
cin>>a[i];
}
sort(a,a+10,cmp);//from big to small
for(int j=0;j<9;j++)
{
b[j]=a[j]-a[j+1];
c[j]=b[j];
}
sort(c,c+9,cmp);//from big to small
for(int i=0;i<9;i++)
{
if(b[i]==c[0])
breakpoint1=i;
else if(b[i]==c[1])
breakpoint2=i;
else;
}
if(breakpoint1>breakpoint2)
{
t=breakpoint1;
breakpoint1=breakpoint2;
breakpoint2=t;
}
for(int i=0;i<=breakpoint1;i++,z++)
sum[0]+=a[i];
for(int i=breakpoint1+1;i<=breakpoint2;i++,x++)
sum[1]+=a[i];
for(int i=breakpoint2+1;i<10;i++,v++)
sum[2]+=a[i];
cout<<sum[2]/v<<endl;
cout<<sum[1]/x<<endl;
cout<<sum[0]/z<<endl;
return 0;
}