ACM之生日相同

来源:互联网 发布:淘宝流量是什么意思 编辑:程序博客网 时间:2024/04/29 19:29

题目描述:


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

输入样例:


500508192 3 200508153 4 500508172 3 200508023 4 500509122 4 5

输出样例:


3 2 00508192 005081724 5 00508153 00508023 00509122

输入描述:


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

输出描述:


对每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。对生日相同的学号,按输入的顺序输出
#include<iostream>#include<string>using namespace std;struct student{int mon,day;string num;};int main(){struct student s[200],temp;int i,j,n,x,y;cin>>n;for(i=0;i<n;i++){cin>>s[i].num>>s[i].mon>>s[i].day;  }for(j=0;j<n;j++){for(i=0;i<n-j-1;i++){if(s[i].mon>s[i+1].mon){temp=s[i];s[i]=s[i+1];s[i+1]=temp;}if(s[i].mon==s[i+1].mon){if(s[i].day>s[i+1].day){temp=s[i];s[i]=s[i+1];s[i+1]=temp;}}}x=0;y=0;}for(i=0;i<n;i++){if(s[i].mon==s[i+1].mon&&s[i].day==s[i+1].day&&x==0){cout<<s[i].mon<<" "<<s[i].day<<" ";x=1;}if(s[i].mon==s[i+1].mon&&s[i].day==s[i+1].day){cout<<s[i].num<<" ";y=1;}else if(y==1){cout<<s[i].num<<" "<<endl;y=0;x=0;}}return 0;}