n个人打乒乓球,好不热闹。已知每人各自胜了几局,请按胜局从多到少排序并输出每个人的排名rank(从1开始)、胜局数num及该人原来的输入序号index(从1开始),若num相同,则rank也相同,但输出时index小者优先输出。
时间: 2024-03-23 11:37:20 浏览: 22
好的,这是一个经典的排名问题,可以使用排序算法和结构体来解决。以下是一个简单的C++实现:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
struct Player {
int index;
int num;
int rank;
};
bool cmp(Player a, Player b) {
if (a.num != b.num) {
return a.num > b.num;
} else {
return a.index < b.index;
}
}
int main() {
int n;
cin >> n;
Player players[n];
for (int i = 0; i < n; i++) {
players[i].index = i + 1;
cin >> players[i].num;
}
sort(players, players + n, cmp);
for (int i = 0; i < n; i++) {
if (i == 0 || players[i].num != players[i - 1].num) {
players[i].rank = i + 1;
} else {
players[i].rank = players[i - 1].rank;
}
cout << players[i].rank << " " << players[i].num << " " << players[i].index << endl;
}
return 0;
}
```
输入格式为:
```
n
num1 num2 ... numn
```
其中n表示人数,numi表示第i个人获胜的局数。
输出格式为:
```
rank1 num1 index1
rank2 num2 index2
...
rankn numn indexn
```
其中ranki表示第i个人的排名。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)