提交时间:2025-05-03 13:04:56
运行 ID: 319954
#include<bits/stdc++.h> using namespace std; struct node{ string name;//姓名 int m,d;//出生月 日 }a[190];//180人的大班级,准备一个数组 bool cmp(node x,node y){ if(x.name.size()!=y.name.size()) return x.name.size()<y.name.size();//名字短的先 return x.name<y.name;//名字按字典序从小到大排序 } int date[13][32]; //行代表月 列代表日 数组存的就是某月某天生日的人数 int main(){ int n,flag=0; cin>>n;//输入人数 for(int i=1;i<=n;i++){//输入每个人的信息 cin>>a[i].name>>a[i].m>>a[i].d; date[a[i].m][a[i].d]++;//对应生日日期的数组人数+1 } sort(a+1,a+n+1,cmp); for(int i=1;i<=12;i++){//月 for(int j=1;j<=31;j++){//日 if(date[i][j]>1){//i月j日出生人数超过1个 flag=1;//找到了相同生日的人 cout<<i<<" "<<j<<" "; for(int k=1;k<=n;k++){//n个人里面去找生日是i月j日的人姓名 if(a[k].m==i&&a[k].d==j){ cout<<a[k].name<<" "; } } cout<<endl;//找完了n个人的生日信息后换行,去找下一个相同生日 } } } if(flag==0) cout<<"None"; return 0; }