描述

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

输入
第一行为整数n,表示有n个学生,n ≤ 180。此后每行包含一个字符串和两个整数,分别表示学生的名字(名字第一个字母大写,其余小写,不含空格,且长度小于20)和出生月(1 ≤ m ≤ 12)日(1 ≤ d ≤ 31)。名字、月、日之间用一个空格分隔
输出
每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的名字,数字、名字之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。 对生日相同的名字,按名字从短到长按序输出,长度相同的按字典序输出。如没有生日相同的学生,输出”None”
样例输入

6
Avril 3 2
Candy 4 5
Tim 3 2
Sufia 4 5
Lagrange 4 5
Bill 3 2

样例输出

3 2 Tim Bill Avril
4 5 Candy Sufia Lagrange

开始觉得这题只需要结构体排序,但要写两个结构体,有点烧脑,但这并不重要

这题主要实现介绍如何结构体套结构体,方法如下:

struct ill{
char name[21];
};
struct node{
int num;
ill ren[185];//用于访问“ill”结构体
}day[16][35];

不要笑结构体的名字…………

千万不要这样写:

struct node{

int num;

struct ill{

char name[20];

}ren[180];

};

不然在写排序函数时会报错

题目很简单,只是想介绍结构体的特性…………

AC代码如下:

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
struct ill{
char name[21];
};
struct node{
int num;
ill ren[185];
}day[16][35];
bool fuu(ill x,ill y)
{
if(strlen(x.name)<strlen(y.name))
return 1;
if(strlen(x.name)==strlen(y.name)&&strcmp(x.name,y.name)<0)
return 1;
return 0;
}
int main()
{
int n,m,d,i,j,k;
bool p=0;
char a[21];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%d%d",a,&m,&d);
strcpy(day[m][d].ren[day[m][d].num].name,a);
day[m][d].num++;
}
for(i=1;i<=12;i++)
for(j=1;j<=31;j++)
if(day[i][j].num)
sort(day[i][j].ren,day[i][j].ren+day[i][j].num,fuu);
for(i=1;i<=12;i++)
for(j=1;j<=31;j++)
if(day[i][j].num>1)
{
p=1;
printf("%d %d",i,j);
for(k=0;k<day[i][j].num;k++)
printf(" %s",day[i][j].ren[k].name);
printf("\n");
}
if(!p)
printf("None");
}

最新文章

  1. Java - NIO
  2. Linq专题之提高编码效率—— 第一篇 Aggregate方法
  3. 图片上传和显示——上传图片——上传文件)==ZJ
  4. 手机h5 页面 iPhone 下 手机号码 蓝色字体 黑色字体
  5. 加解密算法二:非对称加解密及RSA算法的实现
  6. Android-加载透明PNG图片变黑的问题
  7. 【转】vc中使用SendMessage正确发送自定义消息的方法--不错
  8. 典型的DIV CSS三行二列居中高度自适应布局
  9. 51cto那些技术专题们
  10. css学习笔记三
  11. Mac OS终端提示符前缀”bogon”
  12. Bootstrap入门(十九)组件13:页头与缩略图
  13. 如何创建并运行java线程
  14. Oracle忘记密码如何重
  15. EF Code First关系规则及配置
  16. 局域网安全-生成树攻击-ARP攻击-MAC攻击-VTP攻击-动态VLAN的攻击
  17. asp.net简繁体转换
  18. python-*args和**kwargs作用和区别
  19. 一个入门rpc框架的学习
  20. TypeError: unsupported operand type(s) for +: &#39;float&#39; and &#39;decimal.Decimal&#39;

热门文章

  1. 纯CSS制作空心三角形和实心三角形及其实现原理
  2. SQL语句之子语句
  3. 默认 Servlet
  4. Hibernate映射文件详解(News***.hbm.xml)二
  5. Struts2 注释类型
  6. 修改jupyter notebook响应的浏览器
  7. 一些实战中总结的 javascript 开发经验
  8. 适配器模式 iOS
  9. 关于 5G,我们应该了解的
  10. 洛谷P5664 Emiya 家今天的饭 题解 动态规划