版权声明:本文为博主原创文章,未经博主允许不得转载,欢迎前往zory.cf获得最佳体验 https://blog.csdn.net/Zory_Programmer/article/details/78146914
建议前往我的网站获得最佳体验。
理论上就是让数字间相对关系保持不变但数字变小,以缩小占用空间(开数组时)。
struct nod
{
int x,p,z;//x原值,p原位置,z新值
}a[99],b[99];
int main()
{
int n;cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i].x);
a[i].p=i;
b[i]=a[i];
}
sort2(1,n);b[1].z=1;
for(int i=2;i<=n;i++) b[i].z=b[i-1].z+(b[i].x==b[i-1].x);
for(int i=1;i<=n;i++) a[b[i].p].z=b[i].z;
for(int i=1;i<=n;i++) printf("%d ",a[i].z);
}