zoukankan      html  css  js  c++  java
  • 题解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;
    }
    

    具体代码如下:

    mgL5Kf.png

    运行结果如下:

    mgLoqS.png

    显然,这样就实现了自定义排序的功能。

    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;
    }
    

    运行样例结果:
    mgX2ct.png

    没有问题~~~

  • 相关阅读:
    博世传感器调试笔记(一)----加速度传感器BMA253
    博世传感器调试笔记(二)加速度及陀螺仪传感器BMI160
    如何分区硬盘
    " " 与" " 区别
    SPI、I2C、UART、I2S、GPIO、SDIO、CAN
    nandflash,norflash,sdram,emmc,rom,ram等各种存储器识别
    AAC音频格式详解
    【转载】音频基础知识
    指针数组和数组指针的区别
    关于720p和1080p观看距离和效果
  • 原文地址:https://www.cnblogs.com/zzx-0826/p/12261078.html
Copyright © 2011-2022 走看看