您的位置:首页 > 其它

CCF-训练50题-NO.15-选美比赛

2017-11-11 01:24 260 查看

题目描述

在选美大奖赛的半决赛现场,有n名选手(2

输入

选手数量:7

选手得分:5 3 4 7 3 5 6

输出

选手的排名:3 5 4 1 5 3 2

样例代码

#include <iostream>
using namespace std;
void exchange2(int &a,int &b){
int temp=a;
a=b;
b=temp;
}
int main(){
int n;
cin>>n;
int *pep=new int
;
int *forRank=new int
;
int *collect=new int
;
for (int i=0;i<n;i++) {
cin>>pep[i];
forRank[i]=pep[i];
}
for (int i=0;i<n;i++)
for (int j=i+1;j<n;j++){
if (forRank[i]<forRank[j]) exchange2(forRank[i],forRank[j]);
}
int pos=0;
for (int k=0;k<n;k++){
if (forRank[k]>forRank[k+1]){
collect[pos]=forRank[k];
pos++;
}
else if (k==n-1) collect[pos]=forRank[k];
}
for (int i=0;i<n;i++){
for (int j=0;j<=pos;j++){
if (pep[i]==collect[j]){
//cout<<pep[i]<<"="<<collect[j]<<" i="<<i<<" ;j="<<j<<endl;
pep[i]=j+1;
break;
}
}
}

for (int k=0;k<n;k++) {cout<<pep[k];if (k<n-1) cout<<" ";}
return 0;
}
//提示:本题的关键在于如何处理同分数的选手排名问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: