时间限制: 1000 MS 内存限制: 65536 K
提交数: 686 (0 users) 通过数: 303 (297 users)
问题描述
有一个整数数组a,包含N(0<N<=100)个元素。
现在对a的元素按照从小到大的顺序,从1开始进行编号,输出各个元素的编号值。要求不能改变数组a中元素的顺序,且相同的整数要具有相同的编号。
例如数组int a[]={5,3,4,7,3,5,6},则编号结果为{3,1,2,5,1,3,4}
本题分值:2
输入格式
第一行为数组元素个数N
第二行为一组整数
输出格式
输入整数数组的编号结果,每个编号间以空格相隔。
样例输入
7
5 3 4 7 3 5 6
样例输出
3 1 2 5 1 3 4
来源
xmu
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
int a[105] = { 0 };
int dump[105] = { 0 };
int n, i, j, pos;
scanf("%d", &n);
for (i = 1; i <= n; ++i)
{
scanf("%d", &a[i]);
dump[i] = a[i];
}
qsort(dump+1, n, sizeof(a[1]), cmp);
for (i = 1; i <= n; ++i)
{
pos = 1;
if (a[i] == dump[1])
{
printf("1 ");
continue;
}
for (j = 2; j <= n; ++j)
{
if (dump[j] != dump[j-1])
++pos;
if (a[i] == dump[j])
{
printf("%d ", pos);
break;
}
}
}
printf("\n");
return 0;
}