1028. 人口普查(20)
来源:互联网 发布:java float 比较相等 编辑:程序博客网 时间:2024/04/29 07:37
时间限制
200 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。
这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。
输入格式:
输入在第一行给出正整数N,取值在(0, 105];随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串)、以及按“yyyy/mm/dd”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。
输出格式:
在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。
输入样例:5John 2001/05/12Tom 1814/09/06Ann 2121/01/30James 1814/09/05Steve 1967/11/20输出样例:
3 Tom John
自己写的很长,而别人几行就能搞定,唉,算法很重要
#include <iostream>#include <string.h> using namespace std;int Bigger(char a[20], char b[20]){ int i=0; for(i=0;i<10;i++) { if(a[i]-b[i]>0) return 1; if(a[i]-b[i]<0) return 0; } return 0;}int main(){ int n,i,count=0; char name[10],old[10],young[10]; char birth[20],max[20]="1814/09/05",min[20]="2014/09/07"; scanf("%d", &n); for(i=0;i<n;i++) { scanf("%s %s",name,birth); if((Bigger(birth,"1814/09/05"))&&(Bigger("2014/09/07",birth))) { count++; if(Bigger(birth,max)) { strcpy(max,birth); strcpy(old,name); } if(Bigger(min,birth)) { strcpy(min,birth); strcpy(young,name); } } } if(count>0) printf("%d %s %s\n",count,young,old); else printf("0"); system("pause"); return 0; }
0 0
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- pat 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 1028. 人口普查(20)
- 使用COM组件实现对Excel文件的操控
- UVA 442 Matrix Chain Multiplication
- HDU 2064 汉诺塔III
- Redis之Java增删改查
- POJ 1276Cash Machine
- 1028. 人口普查(20)
- 第79讲:单例深入讲解及单例背后的链式表达式
- 不使用Cygwin,在eclipse中快速开发JNI,一键生成C头文件.h,以及一键使用NDK交叉编译
- POJ 4045Power Station
- 三、运筹帷幄,掌握编程的思想
- sizeof和字节对齐
- 常用图像的二值化算法
- “埃及分数”问题浅谈对迭代加深搜索的理解
- 关于创新工场的一道笔试题