C++关键字排序——[D]OSU(玩家记录排名——结构体排序)

题目描述

在音乐游戏OSU中,玩家的排名方式如下:
  如果A玩家的得分比B玩家高,则A排名在B之前;
  如果得分相等,则比较两个玩家的精度,精度高者在前;
  如果精度也相等,则比较两个玩家的COMBO数,COMBO数高者在前。
  现在给出一系列玩家的名单和表现情况,将他们按排名从高到低的顺序输出。

输入

第一行一个数N(N≤500),代表玩家的数量。
  以下N行,分别包含一个玩家的ID,分数,精度和COMBO数,用空格隔开。
  保证不会有三项数据都相同的玩家。

输出

 N行,每行一个玩家的ID,按排名从高到低输出。

样例

输入

4
  Cookiezi 1000000 70 2012
  ShaggoN 233333 95 4000
  Apricot 200000 99 1050
  Rucker 233333 100 3012

输出

Cookiezi
  Rucker
  ShaggoN
  Apricot

参考代码:

本题采用结构体方式存储,还采用了sort函数对结构体数组进行排序。

sort() 函数中,第一个参数 + 的是多少就是起始排序的下标;第二个参数 + 的是多少就是终止排序的下标 -1 。sort() 默认会进行升序排序,要使用降序排序,则应该使用:

// 自己定义比较规则
bool cmp(int a, int b)
{
    return a > b; // 降序
    // return a < b; 升序
}
sort(a, a+5, cmp);

 题目中提到了,排序先比较分数,同分再比较精度,同精度再比较combo,把这个排序规则写入cmp中,主函数直接调用sort函数就方便很多了。

#include <bits/stdc++.h>
using namespace std;

struct Player{	//定义一个玩家结构体,存储玩家id 分数 精度 combo 
	char id[10];
	int sore;
	int deep;
	int combo;
};
bool cmp(Player a, Player b)
{
	if (a.sore != b.sore)
	{
		return a.sore > b.sore;
	}
	else if (a.deep != b.deep)
	{
		return a.deep > b.deep;
	}
	else
	{
		return a.combo < b.combo;
	}
}
int main()
{
	int n;
	cin>>n;
	Player p[n];			//结构体数组 
	for(int i=0;i<n;i++){
		cin>>p[i].id>>p[i].sore>>p[i].deep>>p[i].combo;
	}
	sort(p+1,p+n+1,cmp);
	for(int i=0;i<n;i++)
		cout<<p[i].id<<endl;
	return 0;
}

相关推荐

  1. C++知识点总结(16):结构排序

    2024-04-01 08:38:02       51 阅读
  2. 结构数组按总分排序结构

    2024-04-01 08:38:02       57 阅读
  3. 关键字排序

    2024-04-01 08:38:02       27 阅读
  4. 小朋友排队(归并排序c++)

    2024-04-01 08:38:02       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 08:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 08:38:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 08:38:02       82 阅读
  4. Python语言-面向对象

    2024-04-01 08:38:02       91 阅读

热门阅读

  1. 图片转换成base64如何在html文件中使用呢

    2024-04-01 08:38:02       42 阅读
  2. Go的数据结构与实现【Graph】

    2024-04-01 08:38:02       43 阅读
  3. Go 源码之切片 Slice

    2024-04-01 08:38:02       37 阅读
  4. Qt主窗口 之:状态栏(QStatusBar)

    2024-04-01 08:38:02       32 阅读
  5. 线阵相机如何选型

    2024-04-01 08:38:02       36 阅读
  6. 「CSS 只要三节课」之入门

    2024-04-01 08:38:02       39 阅读
  7. 奖学金NOIP2007 普及组 T1

    2024-04-01 08:38:02       31 阅读
  8. 力扣 219.存在重复元素2

    2024-04-01 08:38:02       37 阅读
  9. spring系列常用注解原理

    2024-04-01 08:38:02       35 阅读
  10. 简单了解HTTP和HTTPS

    2024-04-01 08:38:02       41 阅读
  11. C++类复习

    2024-04-01 08:38:02       34 阅读
  12. EXCEL VBA限制工作数据批号或者自定义规则完整

    2024-04-01 08:38:02       38 阅读