大学生算法设计与编程挑战赛——mid
Description
又到了云之国一年一度的任务风云榜更新的大日子了。
给出每个人风云力数值,需要你给出每个人的排名。注意,排名存在并列的情况。
Input
一共有 2 行。
第一行一个整数 n ,表示一共有 n 个人。
第二行有n个空格隔开的整数。第i个数a[i]表示第i个人的风云力数值。
Output
输出仅一行,共n个整数,第i个数a[i]表示第ii个人的风云榜排名。
样例如下:
完整代码:
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
vector<int>::iterator it;
vector<int>::iterator ite;//定义迭代器
int main(int argc, char** argv) {
int n;
int x;
vector<int> v;
vector<int> v_1;
cout<<"请输入人物个数:"<<endl;
cin>>n;
for(it=v.begin();v.size()!=n; ++it){
cin>>x;
v.push_back(x);
}//手动输入n个人物评分
sort(v.begin(),v.end());//直接使用c++的排序函数
v_1.assign(v.begin(),v.end());//拷贝
cout<<endl;
int i=n;
for(it=v.begin();it!=v.end();++it){
for(ite=v_1.begin();ite!=v_1.end();++ite){
if(*it == *ite&&i!=0){
cout<<i<<" ";
i--;
}
}
}//比较并输出
return 0;
}
如果无法使用sort函数,推荐排序算法为归并算法,相比较于其他算法时间复杂度,空间复杂度,稳定性以及数据量的处理性更好哦!
有问题私聊博主哦!!!