给一个整型数组中的数按从大到小的顺序连续编号,要求相同数字编号相同,编号从1开始,输出编号结果时按照原数组元素的顺序输出。

题目描述
给一个整型数组中的数按从大到小的顺序连续编号,要求相同数字编号相同,编号从1开始,输出编号结果时按照原数组元素的顺序输出。
输入
第一行输入数组元素个数(个数大于等于1,并且小于等于20),第二行输入整型数组元素,各个整数之间以空格分隔。
输出
在一行内依次输出编号结果,各个编号之间用一个空格分隔。
样例输入 复制
7
-3 75 51 90 1118 51 -3
样例输出 复制
5 3 4 2 1 4 5

供参考:

#include<stdio.h>
int main()
{
    int a[21]={0},b[21]={0};
    int i,j,s,n;
    scanf("%d",&n);
    for(i=0; i<n; i++)
        scanf("%d",&a[i]);
    for(i=0; i<n-1; i++)
        for(j=i+1; j<n; j++)
            if(a[i]==a[j])
                b[i]++;
    for(i=0; i<n; i++)
    {
        for(j=0, s=1; j<n; j++)
            if(b[j]==0 && a[i]<a[j])
                s++;
        printf(i == 0 ?"%d":" %d" ,s);
    }
    printf("\n");
    return 0;
}