首页 > 学院 > 开发设计 > 正文

宝宝无语了之结构体

2019-11-14 08:58:19
字体:
来源:转载
供稿:网友
上题:6377:生日相同 2.0查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日。试找出所有生日相同的学生。输入第一行为整数n,表示有n个学生,n ≤ 180。此后每行包含一个字符串和两个整数,分别表示学生的名字(名字第一个字母大写,其余小写,不含空格,且长度小于20)和出生月(1 ≤ m ≤ 12)日(1 ≤ d ≤ 31)。名字、月、日之间用一个空格分隔输出每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的名字,数字、名字之间都用一个空格分隔。对所有的输出,要求按日期从前到后的顺序输出。 对生日相同的名字,按名字从短到长按序输出,长度相同的按字典序输出。如没有生日相同的学生,输出”None”样例输入6Avril 3 2Candy 4 5Tim 3 2Sufia 4 5Lagrange 4 5Bill 3 2样例输出3 2 Tim Bill Avril

4 5 Candy Sufia Lagrange

代码别人滴,百度好久竟然只有两个代码,简直不能忍受!还有一个代码是错的,一个对了简直无语了,我觉得这个题目不难啊(不要问我为什么不会做,,,反正我可以看懂的题目都是不难的)

自己重复的毛病:思路错了不知道转换思路浪费时间,然后以前不会不会的地方没有仔细琢磨,再次出现继续不会。

这个题思路非常清楚就是不会写,,,首先,相同的生日怎么写,,,宝宝的愚蠢行为就不说了,然后相同生日完了,比较名字我会写但是怎么放在一起,,,连续,又不会,最后输出格式可能不会写,明天仔细琢磨别人代码吧。

#include<stdio.h>#include<math.h>#include<string.h>#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");}

此代码应该可以看懂,除了头文件不怎么常见,其他应该还好。


上一篇:使用cmake自动构建工程

下一篇:Mybatis

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表