题解P1104生日
\(\color{blue}{P1104 生日(题目传送门)}\)
这道题的大意是:给出n个人的出生日期,让我们按年龄(就是先比年份,再比月份和日期,这是常识好吧)大小来排序,如果相同则按输入顺序排序。
开始解题
- 理清题意后,我们只需按题意去模拟即可。
1. 强大的STL
大家肯定不陌生,STL里面有个sort的函数,格式为
sort(a.begin(),a.end());
然而,sort函数实际上是有3个参数的,除了其实位置和结束位置意外,还有一个用户自定义的cmp函数,当然,这个cmp函数还是需要自己写的,因为sort默认从小到大排,而对于结构体或者从小到大排,则需要用到cmp函数了。具体用法如下:
sort(a+1,a+1+n,cmp);//sort排序
//cmp函数
bool cmp(int x,int y)//从大到小排
{
return x>y;
}
具体代码如下:

运行结果如下:

显然,这样就实现了自定义排序的功能。
2.结构体
这道题,最方便的存储名字即年月日的方法就是用结构体来存,用法见下:
struct node{//struct+结构体名字
//定义这个结构体里的变量
string name;
int year;
int month;
int day;
int num;
}a[105];//注意这里的;当然c++里面struct 是自动生成‘;’的,无需再打
这就相当于对一个人的身份信息进行绑定了。
3.代码实现
代码实现就简单了,用结构体存储信息,再sort排序一下就OK了
code:
#include <bits/stdc++.h>
using namespace std;
int n;
struct node{//结构体
string name;//记录名字
int year;//出生年份
int month;//出生月份
int day;//出生日期
int num;//输入顺序
}a[105];
bool cmp(node x,node y){//cmp排序 注意此处的用法bool cmp(node x,node y)必须用结构体的名字,而不能用a x,a y。
if(x.year!=y.year)return x.year<y.year;//如果年份不同,则按年份小的在前面。
if(x.month!=y.month)return x.month<y.month;//...
if(x.day!=y.day)return x.day<y.day;
return x.num>y.num;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].year>>a[i].month>>a[i].day;//结构体读入方法
a[i].num=i;//存储顺序
}
sort(a+1,a+1+n,cmp);//sort排序
for(int i=1;i<=n;i++)cout<<a[i].name<<endl;//打印排序后的名字。
return 0;
}
运行样例结果:

没有问题~~~
题解P1104生日的更多相关文章
- 洛谷——P1104 生日
P1104 生日 题目描述 cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序.但cjf君最近作业很多,没有时间,所以请你帮她排序. 输入输出格式 输入格式: 有2行, 第1行为OI组总 ...
- 洛谷 P1104 生日
P1104 生日 题目描述 cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序.但cjf君最近作业很多,没有时间,所以请你帮她排序. 输入输出格式 输入格式: 有2行, 第1行为OI组总 ...
- 【洛谷P1104】生日
题目描述 cjf君想调查学校OI组每个同学的生日,并按照从大到小的顺序排序.但cjf君最近作业很多,没有时间,所以请你帮她排序. 输入输出格式 输入格式: 有2行,第1行为OI组总人数n:第2行至第n ...
- 洛谷【P1104】生日(冒泡排序版)
题目传送门:https://www.luogu.org/problemnew/show/P1104 题目很简单,我主要是来讲冒泡排序的. 所谓冒泡排序,流程如下: 每次确定一个\(rk\)(从\(n\ ...
- 洛谷【P1104】生日(插入排序版)
题目传送门:https://www.luogu.org/problemnew/show/P1104 题目很简单,我主要是来讲插入排序的. 所谓插入排序,就是从待排序数组不断将数据插入答案数组里. 假设 ...
- 洛谷【P1104】生日(选择排序版)
题目传送门:https://www.luogu.org/problemnew/show/P1104 题目很简单,不过我是来讲选择排序的. 选择排序\((Selection sort)\)是一种简单直观 ...
- 题解报告:hdu1201(18岁生日)
2018-02-24题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1201 Problem Description Gardon的18岁生日就要到了,他 ...
- 题解 BZOJ 1037 & Luogu P2592 [ZJOI2008]生日聚会
BZOJ & Luogu 老师说是背包?并没看出来QAQ 设f[i][j][o][p]表示已经选了i个人,j个男生,男生比女生最多多o个,女生比男生最多多p个时的方案数 两种转移: <= ...
- vijos题解
Vijos题解 题库地址:https://vijos.org/p P1001 谁拿了最多奖学金 题意:按照指定要求计算奖学金,直接用if判断即可 #include<iostream> us ...
随机推荐
- transient简介
当一个对象实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的 ...
- restframework 序列化补充(自定义ModelSerializerl)
一.知识点 1.source title = serializers.CharField(source='courses.title') source用于one2one.foreginkey.choi ...
- 安装 Xen
安装 Xen 安装支持 Xen 的相关工具: $ sudo apt-get install ubuntu-xen-server 下载和安装支持 Xen 的 Linux 内核: http://secur ...
- [SDOI2011]染色(树链剖分)
[SDOI2011]染色(luogu) Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段 ...
- JS-09-数组
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- MVC ajaxfileupload 实现无刷新导入或上传功能
直接上代码吧 前台 先引用 ajaxfileupload.js <script src="~/Scripts/ajaxfileupload.js"></scrip ...
- win10下安装Anaconda3
1.官方下载:https://www.anaconda.com/distribution/#download-section (最新版直接下即可) 或者国内镜像下载:https://mirrors. ...
- 使用.NET Core优雅获取并展示最新疫情数据
前言 新型冠状病毒的出现,着实让人紧张.我每天一大早都会去查看今天的最新数据,可是每次的数据都挺让人揪心的.今天突然间很想看看过去的历史的数据,结果查了很多资料都不是很全.反正国家让我们待在家里做贡献 ...
- Spring Boot 2.x基础教程:默认数据源Hikari的配置详解
通过上一节的学习,我们已经学会如何应用Spring中的JdbcTemplate来完成对MySQL的数据库读写操作.接下来通过本篇文章,重点说说在访问数据库过程中的一个重要概念:数据源(Data Sou ...
- Unreal Engine 4 蓝图完全学习教程(一)—— 简要介绍
首先启动UE4: 新建项目类型为游戏: 选择空项目Blank: 项目设置选项: 点击创建项目: 打开后的窗口称为:“关卡编辑器”,由多个面板组成.在UE中,设计3D场景的空间称为“关卡”. 简单介绍一 ...