相同生日

来源:互联网 发布:雷迪斯ups软件官网 编辑:程序博客网 时间:2024/06/10 22:15

题目描述

在一个有200人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日,试找出所有生日相同的学生。

输入

第一行为整数n,表示有n个学生,n<=200。此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度为11位)和出生月(1<=m<=12)日(1<=d<=31),学号、月、日之间用一个空格分隔。

输出

对每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。对生日相同的学号,按输入的顺序输出。

样例输入

607101020105 3 1507101020115 4 507101020118 3 1507101020108 4 507101020111 4 507101020121 8 10

样例输出

3 15 07101020105 071010201184 5 07101020115 07101020108 07101020111

8 10 07101020121

#include <iostream>#include <algorithm>using namespace std;typedef struct {char sno[12];int month;int day;}stu_info;stu_info info[201];bool cmp(stu_info a, stu_info b){if ( a.month == b.month ){return a.day < b.day;}else{return a.month < b.month;}}int main(){int n;cin>>n;for (int i=0; i<n; i++){cin>>info[i].sno>>info[i].month>>info[i].day;}sort(info, info+n, cmp);for (int i=0; i<n; i++){for (int j = i; j<n; j++){if ( info[i].month == info[j].month && info[i].day == info[j].day ){if (i==j)cout<<info[i].month<<" "<<info[i].day<<" "<<info[i].sno;elsecout<<" "<<info[j].sno;} else{cout<<endl;i = j - 1;break;}}}return 0;}


0 0
原创粉丝点击