标签:sort turn log tps struct details 之间 day 2.0
描述
在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日。试找出所有生日相同的学生。
输入
第一行为整数n,表示有n个学生,n ≤ 180。此后每行包含一个字符串和两个整数,分别表示学生的名字(名字第一个字母大写,其余小写,不含空格,且长度小于20)和出生月(1 ≤ m ≤ 12)日(1 ≤ d ≤ 31)。名字、月、日之间用一个空格分隔输出每组生日相同的学生,
输出
一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的名字,数字、名字之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。 对生日相同的名字,按名字从短到长按序输出,长度相同的按字典序输出。如没有生日相同的学生,输出”None”
copy的代码:
1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 struct ill{ 7 char name[21]; 8 }; 9 struct node{ 10 int num; 11 ill ren[185]; 12 }day[16][35]; 13 bool fuu(ill x,ill y) 14 { 15 if(strlen(x.name)<strlen(y.name)) 16 return 1; 17 if(strlen(x.name)==strlen(y.name)&&strcmp(x.name,y.name)<0) 18 return 1; 19 return 0; 20 } 21 int main() 22 { 23 int n,m,d,i,j,k; 24 bool p=0; 25 char a[21]; 26 scanf("%d",&n); 27 for(i=0;i<n;i++) 28 { 29 scanf("%s%d%d",a,&m,&d); 30 strcpy(day[m][d].ren[day[m][d].num].name,a); 31 day[m][d].num++; 32 } 33 for(i=1;i<=12;i++) 34 for(j=1;j<=31;j++) 35 if(day[i][j].num) 36 sort(day[i][j].ren,day[i][j].ren+day[i][j].num,fuu); 37 for(i=1;i<=12;i++) 38 for(j=1;j<=31;j++) 39 if(day[i][j].num>1) 40 { 41 p=1; 42 printf("%d %d",i,j); 43 for(k=0;k<day[i][j].num;k++) 44 printf(" %s",day[i][j].ren[k].name); 45 printf("\n"); 46 } 47 if(!p) 48 printf("None"); 49 }
这道题是真的不懂。。。大佬的代码里还有很多不懂的东西::>_<::
from--------------https://blog.csdn.net/C20182024/article/details/52621786
标签:sort turn log tps struct details 之间 day 2.0
原文地址:https://www.cnblogs.com/zytwan/p/9316036.html