猎户星系中某星区爆发局部战争,持久的战争使得战争机器被大量消耗,甚至一些100年前生产武器都被启封使用。Gand军前线新到一批武器,为N台重型机甲,每台机甲的信息为攻击力Atk(100<=Atk<=999)、防御力Def(100<=Def<=600)、已生产时间year(0<=year<=200)、编号Idx(1<=Idx<=N<=1000)。

前线指挥官需要根据机甲信息快速准备出战顺序,要求出战机甲以攻击力强大者优先出击,攻击力相同者以防御力强大者优先出击,防御力相同者以已生产时间较低者优先出击。请根据要求,输出前线新到机甲的参战次序。

输入格式:

第1行,一个正整数N,1<=N<=1000。(1~N为机甲编号)

第2行起输入N行,每行三个正整数,分别表示攻击力、防御力、已生产时间。

输出格式:

输出1行,按要求排序后的机甲编号。

输入样例:

5

566 160 50

160 320 106

700 500 2

700 160 123

700 160 115

输出样例:

3 5 4 1 2

#include<iostream>
#include<algorithm>
using namespace std;
struct jijia{//定义jijia数据类型,一个机甲所需提供的信息int Atk,//攻击力Def,//防御力year,//已生产时间Idx;//运抵前线时的编号
};
bool cmpAtk(jijia x,jijia y){//sort排序标准:按攻击力从大到小排序return x.Atk > y.Atk ;
}
bool cmpDef(jijia x,jijia y){//sort排序标准:按防御力从大到小排序return x.Def > y.Def ;
}
bool cmpyear(jijia x,jijia y){//sort排序标准:按已生产时间从小到大排序return x.year < y.year ;
}
int N;
jijia a[1001];
int main(){cin>>N;for(int i=0;i<N;i++){cin>>a[i].Atk>>a[i].Def>>a[i].year;a[i].Idx = i+1;//编号从1开始}sort(a,a+N,cmpyear);//先按已生产时间排序sort(a,a+N,cmpDef);//再按防御力排序sort(a,a+N,cmpAtk);//最后才按攻击力排序for(int i=0;i<N;i++){cout<<a[i].Idx<<" ";}return 0;
}

解析:

由于一个机甲个体有四个标签:编号、攻击力、防御力、已生产时间。使用结构(struct)自定义数据类型会有利于整体排序。

由于“以攻击力强大者优先出击,攻击力相同者以防御力强大者优先出击,防御力相同者以已生产时间较低者优先出击”,从中最高优先级应该是已生产时间,然后是防御力,最后是攻击力。所以排序的优先级就为:已生产时间==》防御力==》攻击力。

sort函数是C++的<algorithm>库提供的排序函数,其第三项可以通过自定义来设置排序参考对象和排序方式,当然也可以使用其它的排序方式。

星系局部战争(结构struct,sort排序)相关推荐

  1. CSP认证201709-2 公共钥匙盒[C++题解]:结构体、排序、枚举

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 采用结构体来存每个操作,保存啥呢?三个成员:钥匙id:操作的类型:1表示还钥匙,0表示取钥匙:操作的时间tm: 然后结构体内部排序, ...

  2. PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:和下面这题是一道题: PAT甲级1137 Final Grading:[C++题解]结构体.排序.哈希表.结构体构造函数.结构体内写函 ...

  3. C++结构体多级排序的三种方法

    C++结构体多级排序的三种方法 struct node{int chinese,math;char name[15]; }; 需求:按数学成绩从大到小排序  1.自定义比较器 //自定义比较函数 bo ...

  4. Golang sort 排序

    1.前言 开发过程中,我们经常需要对元素进行排序,使用 Go 我们可以轻松实现. Go 内置 sort 包中提供了根据一些排序函数可对任何序列进行排序,并提供自定义排序规则的能力. sort 包实现了 ...

  5. 自写sort排序函数(支持重载排序规则)

      最近有点浮躁,无心练题,便捣鼓了一阵子的C++.接触了一点点的重载和模板后,心血来潮想写一点牛逼点的东西.因为平时打编程比赛要排序的地方都是直接用的C++中自带的sort排序函数,就想自己也写一个 ...

  6. C++ sort() 排序函数

    本文参考的博客链接 PAT排序例题A1025 经典排序算法 算法总目录 一.简介 1.头文件:#include 2.时间复杂度:sort在实现中规避了经典快速排序中可能出现的会导致实际复杂度退化到O( ...

  7. C++的STL库,vector sort排序时间复杂度 及常见容器比较

    http://www.cnblogs.com/sthv/p/5511921.html http://www.169it.com/article/3215620760.html http://www.c ...

  8. sort 排序大全 - 最全的sort排序

    文章目录 偷懒的tie 结构体内部 外部 精简 偷懒的tie #include <iostream> #include <tuple> #include <algorit ...

  9. C语言结构体自定义排序

    结构体自定义排序: 在最基础的C语言中,排序较为简单的有三种:冒泡,选择,插入.其中选择最劣.复杂一点的有快速排序和归并排序,在这里后两种我就不介绍了. 在使用结构体排序的时候,里面可能有许多不同的对 ...

最新文章

  1. 全网最详细 TCP 参数讲解,不用担心没有面试机会
  2. 教AI逐帧搓招玩《铁拳》通关最高难度,现在的街机游戏爱好者有点东西啊
  3. sublime text常用快捷键
  4. 【干货】从国外知名网站看用户体验4个基本标准
  5. 提取验证码到winform上webbroswer和axwebbroswer
  6. 大手笔,送¥1599的Apple AirPods Pro和独家礼物等
  7. DOCKER存储驱动之DEVICE MAPPER简介
  8. 爱恨交织的编程语言 是什么吸引了你
  9. android gsensor 坐标,MTK Android G sensor 原理,配置,调试
  10. 信息学奥赛一本通 1127:图像旋转 | OpenJudge NOI 1.8 11:图像旋转
  11. 从FTP下载文件带进度条
  12. php用户注册重复_php如何禁止重复注册用户名
  13. 序列上问题(逆元+整数快速幂)
  14. 怎么样开启红米手机3S 3X的root超级权限
  15. HDU6148 Valley Numer
  16. 使用IPV6搭建自己的Web网站
  17. 〖大前端 - 基础入门三大核心之CSS篇③〗- CSS选择器之复合选择器与伪类
  18. 印度和印度尼西亚有什么关系吗?
  19. 清华大学 陈晨 计算机,TNet基于树型结构集群工具软件通信协议.PDF
  20. 在线电脑内存测试软件,内存占用测试_软件资讯软件评测-中关村在线

热门文章

  1. 计算机信息量单位kbit,计算机网络中传输介质传输速率的单位是bps,其含义是什么...
  2. 微课在中职计算机基础中的应用,微课在中职学校计算机应用基础课程中的应用.pdf...
  3. (20230501防遗忘)lsdyna DEM个人模型操作记录
  4. 【二分】Kevin喜欢零
  5. 百问网--七天物联网课程学习笔记(7)
  6. 商标注册需要什么资料?注册商标需要多久时间
  7. 隐藏文件夹怎么显示,只需1分钟,快速学会
  8. displaytag的Excel导出实践
  9. [问题解决]解决编译时,Androidx和其他三方库冲突
  10. [翻译] Overleaf 常见错误