package games4;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class Main10 {
static List<Integer>list[];
static List<Double>list2=new ArrayList<>();
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
in.nextToken();
int n=(int) in.nval;
in.nextToken();
int k=(int) in.nval;
in.nextToken();
int m=(int) in.nval;
list=new ArrayList[n];
for (int i = 0; i < n; i++) {
list[i]=new ArrayList<>();
}
for (int i = 0; i < n; i++) {
for (int j = 0; j <k; j++) {
in.nextToken();
int score=(int) in.nval;
list[i].add(score);
}
Collections.sort(list[i]);
list[i].remove(list[i].size()-1);
list[i].remove(0);
double avg = list[i].stream().collect(Collectors.averagingInt(x -> x));
list2.add(avg);
//System.out.println(avg);
}
Collections.sort(list2);
int m1=n-m;
for (int i = 0; i < m; i++) {
if(i==m-1) {
System.out.printf("%.3f\n",list2.get(m1));
}else {
System.out.printf("%.3f ",list2.get(m1));
m1++;
}
}
}
}
思路:创建了一个list[]数组,用来装每个人的成绩,再创建一个list2然后再排序,在list[i]中直接移除最大值和最小值,再计算list[i]的均值,把它们的均值 装入list2中,再进行排序,按要求输出成绩。
备注: 会运行超时,只能拿到17分,但我真的没办法了