【问题描述】在选美大奖赛的半决赛现场,有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.Arrays;
public class WhoBeautiful{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int[] r1 = new int[n];
int[] r2 = new int[n+1];
int[] r3 = new int[n];
int k = 0;
for(int i = 0;i<n;i++){
r1[i] = input.nextInt();
r2[i] = r1[i];
}
Arrays.sort(r2,0,n);
//去除r2中的重复元素
for(int i = 0;i<n;i++){
if(r2[i]!=r2[i+1])
r3[k++]=r2[i];
}
int[] r4 = new int[k];
for(int i = 0;i<k;i++){
r4[i] = r3[k-i-1];
}
for(int i = 0;i<n;i++){
for(int j = 0;j<k;j++)
if(r1[i]==r4[j])
System.out.printf(j+1+" ");
}
input.close();
//*/
}
}