请问哪里不对

P5738 【深基7.例4】歌唱比赛

@[ycyy](/user/877089) ①去掉`cout<<endl;`,否则第一行是空的,OJ进行逐个字符匹配的时候是不能判对的。 ②`sort(a,a+m-1,cmp);//从小到大排`应当放到`for(int j=0;j<m;j++)`下面,虽然对于本题而言可能时间上过得去,但是在要求更高的大部分题里面就已经寄了。 另外 `sort(begin,end,cmp)`是从 `begin`到`end`但是取不到`end`的元素进行排序,用区间表示是$[begin,end)$,称为左闭右开的,STL和一些其他库函数基本均采用这一标准,根据题意,需要改为`sort(a,a+m,cmp);`,否则排半天序,最后一个元素也不参与进来。 ### 改后的代码,可供参考,已提交AC ```cpp #include<iostream> #include<iomanip> #include<algorithm> using namespace std; bool cmp(int i,int j) { return i>j; } int main() { int n,m,k,sum; double p=0,sum1=0,max=0; int a[10000]; cin>>n>>m; k=m-2; for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { cin>>a[j]; } sort(a,a+m,cmp);//从小到大排 for(sum=1;sum<m-1;sum++) { sum1+=a[sum]; }//最高和最低去掉 p=sum1/k; if(p>max){max=p;} p=0; sum1=0; } cout<<setprecision(2)<<fixed<<max; system("pause"); return 0; } ```
by Terrible @ 2023-03-23 15:49:59


@[Terrible](/user/195942) 测试正确,感谢
by ycyy @ 2023-03-23 19:27:03


|