首页 > 其他 > 详细

离散化基础。输入一行n个不同的整数,每个数都是Int范围,依次输出每个数的排名。

时间:2021-01-08 14:58:16      阅读:27      评论:0      收藏:0      [点我收藏+]

思路:

(1)使用结构体(data,index,rank)

(2)先输入这组数,并存储好下标(编号);

(3)使用sort函数,按照从小到大的顺序排好;存储此时排序的位置(rank)

(4)使用sort函数,按照下标(编号)顺序排好;

(5)依次输出每个数的rank即可。

备注:

sort(a+1,a+n+1,cmp)

cmp为bool型,不用传地址。

参考代码:

#include<bits/stdc++.h>
using namespace std;
struct node{
int data;
int rank;
int index;
}a[10001];
bool cmp1(node x,node y);
bool cmp2(node x,node y);
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].data;
a[i].index=i;
}
sort(a+1,a+n+1,cmp1);
for(int i=1;i<=n;i++)
{
a[i].rank=i;
}
sort(a+1,a+n+1,cmp2);
for(int i=1;i<=n;i++)
{
cout<<a[i].rank<<" ";
}
cout<<endl;
return 0;
}
bool cmp1(node x,node y)
{
return x.data<y.data;
}
bool cmp2(node x,node y)
{
return x.index<y.index;
}

离散化基础。输入一行n个不同的整数,每个数都是Int范围,依次输出每个数的排名。

原文:https://www.cnblogs.com/yue123/p/14251194.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!