处理排名(1 1 3 4 4 6)的方式有两种
第一种方法:第一个人记为1,遍历剩余个体
bl.get(0).rank=1;
for(int k=1;k<bl.size();k++) {
if(bl.get(k).score==bl.get(k-1).score) {
bl.get(k).rank=bl.get(k-1).rank;
}else {
bl.get(k).rank=k+1;
}
}
第二种方法:不需要记录排名只需要输出即可
int rank=1;
for(int i=0;i<al.size();i++) {
if(i>0&&al.get(i).score!=al.get(i-1).score) {
rank=i+1;
}
System.out.println(al.get(i).id+" "+rank+" "+al.get(i).classroom+" "+al.get(i).rank);
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(br.readLine());//考场数量
//int num=0;
ArrayList<Student> al=new ArrayList<>();
for(int i=0;i<n;i++) {
int m=Integer.parseInt(br.readLine());//第i个考场的人数
//num+=m;
ArrayList<Student> bl=new ArrayList<>();
for(int j=0;j<m;j++) {
String []str=br.readLine().split(" ");
String id=str[0];
int score=Integer.parseInt(str[1]);
Student s=new Student();
s.id=id;
s.score=score;
s.classroom=i+1;
al.add(s);
bl.add(s);
}
Collections.sort(bl);
bl.get(0).rank=1;
//func(bl);
for(int k=1;k<bl.size();k++) {
if(bl.get(k).score==bl.get(k-1).score) {
bl.get(k).rank=bl.get(k-1).rank;
}else {
bl.get(k).rank=k+1;
}
}
}
Collections.sort(al);
System.out.println(al.size());
//System.out.println(al.get(0).id+" 1 "+al.get(0).classroom+" "+al.get(0).rank);
int rank=1;
for(int i=0;i<al.size();i++) {
if(i>0&&al.get(i).score!=al.get(i-1).score) {
rank=i+1;
}
System.out.println(al.get(i).id+" "+rank+" "+al.get(i).classroom+" "+al.get(i).rank);
}
}
}
class Student implements Comparable<Student>{
String id;
int score;
int classroom;
int rank;
@Override
public int compareTo(Student o) {
if(o.score!=this.score) {
return o.score-this.score;
}else {
return this.id.compareTo(o.id);
}
}
}