生日相同 2.0

Posted zytwan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生日相同 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("
");
46             }
47     if(!p)
48     printf("None");
49 }

这道题是真的不懂。。。大佬的代码里还有很多不懂的东西::>_<:: 

from--------------https://blog.csdn.net/C20182024/article/details/52621786

以上是关于生日相同 2.0的主要内容,如果未能解决你的问题,请参考以下文章

CentOS庆祝15岁生日,为CentOS 8.0发布做准备

聚合物2.0 webcomponent带有切片的饼图选项抛出错误 - 无法定义toLowerCase未定义

生日相同

生日悖论

将代码片段插入数据库并在 textarea 中以相同方式显示

生日蜡烛 (结果填空)