标签:依次 数据 i++ 离散化 stdio.h return int 相同 初始化
#include <stdio.h>
#include <string.h>
int a[10005],b[10005];
int main()
{
int n;
scanf("%d",&n);
for (int i = 0;i<n;i++)
{
scanf("%d",&a[i]);
b[a[i]]++;
}
int index = 1;
for (int i = 0;i<10005;i++)
{
if (b[i] != 0)
{
b[i] = index++;
}
}
for (int i = 0;i<n;i++)
{
printf("%d ",b[a[i]]);
}
}
二解:
#include<bits/stdc++.h>
using namespace std;
struct node
{
int num,id_before,id_after;
} a[10002];
int n;
int cmp1(node A,node B)
{
return A.num<B.num;
}
int cmp2(node A,node B)
{
return A.id_before<B.id_before;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i].num;
a[i].id_before=i+1; //之前编号初始化
}
sort(a,a+n,cmp1); //对数据进行排序
a[0].id_after=1; //之后编号初始化
int h=1;
for(int i=1;i<n;i++)
{
if(a[i].num>a[i-1].num)
a[i].id_after=++h;
else
a[i].id_after=h;
}
sort(a,a+n,cmp2);
for(int i=0;i<n;i++)
cout<<a[i].id_after<<" ";
return 0;
}
标签:依次 数据 i++ 离散化 stdio.h return int 相同 初始化
原文地址:https://www.cnblogs.com/fangzheng-nie/p/9960305.html