【问题描述】在选美大奖赛的半决赛现场,有n名选手(2<n<100)参加比赛。比赛结束时,要在现场按照选手的出场顺序宣布最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。如: </div> <div> 选手数量: 7 选手得分: 5,3,4,7,3,5,6宣布名次: 3,5,4,1,5,3,2 请编程帮助大奖赛组委会完成半决赛的评分排名工作。
【输入形式】选手数量:7 选手得分:5;3;4;7;3;5;6
【输出形式】选手的排名:3 5 4 1 5 3 2
【样例输入】7 5 3 4 7 3 5 6
【样例输出】3 5 4 1 5 3 2
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Comparator;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> scores = new ArrayList<Integer>();
ArrayList<Integer> sortedSco = new ArrayList<Integer>();
int playerNum = scanner.nextInt();
for (int i = 0;i < playerNum;i++){
int score = scanner.nextInt();
scores.add(score);
if (!sortedSco.contains(score)){
sortedSco.add(score);
}
}
sortedSco.sort(Comparator.reverseOrder());
for(Integer i:scores){
System.out.print((sortedSco.indexOf(i)+1)+" ");
}
}
}
//升序排列:scores.sort(Comparator.naturalOrder())
139

被折叠的 条评论
为什么被折叠?



