//PAT1028V2
#include <stdio.h>
int main(){
int n,count=0,i; //n is the number of input
scanf("%d",&n);
struct birth{
char name[6];
int year;
int month;
int day;
}a,max,min;
max.year=2014,max.month=9,max.day=7;
min.year=1814,min.month=9,min.day=5;
for(i=0;i<n;i++){
scanf("%s %d/%d/%d",&a.name,&a.year,&a.month,&a.day);
count++;
if((a.year>2014)||(a.year==2014&&a.month>9)||(a.year==2014&&a.month==9&&a.day>6)||(a.year<1814)||(a.year==1814&&a.month<9)||(a.year==1814&&a.month==9&&a.day<6)){
count--;
continue;
}
if((a.year<max.year)||(a.year==max.year&&a.month<max.month)||(a.year==max.year&&a.month==max.month&&a.day<max.day)){
max=a;
}
if((a.year>min.year)||(a.year==max.year&&a.month>max.month)||(a.year==min.year&&a.month==min.month&&a.day>min.day)){
min=a;
}
}
printf("%d",count);
if(count!=0){
printf(" %s %s",max.name,min.name);
}
return 0;
}
看注释.
#include <stdio.h>
int main() {
int n, count = 0, i; //n is the number of input
scanf("%d", &n);
struct birth {
char name[6];
int year;
int month;
int day;
}a, max, min;
max.year = 2014, max.month = 10, max.day = 7;
min.year = 1814, min.month = 8, min.day = 1;
for (i = 0; i<n; i++) {
scanf("%s %d/%d/%d", &a.name, &a.year, &a.month, &a.day);
count++;
if ((a.year>2014) || (a.year == 2014 && a.month>9) || (a.year == 2014 && a.month == 9 && a.day>6) || (a.year<1814) || (a.year == 1814 && a.month<9) || (a.year == 1814 && a.month == 9 && a.day<6)) {
count--;
continue;
}
if ((a.year<max.year) || (a.year == max.year&&a.month<max.month) || (a.year == max.year&&a.month == max.month&&a.day<max.day)) {
max = a;
}
//下方第二个逻辑判断把min错写成了max,写的时候没注意看吧
if ((a.year>min.year) || (a.year == min.year&&a.month>min.month) || (a.year == min.year&&a.month == min.month&&a.day>min.day)) {
min = a;
}
}
printf("%d", count);
if (count != 0) {
printf(" %s %s", max.name, min.name);
}
return 0;
}
最后一个检查点应该是性能方面的,你是不是超时了。
https://www.jianshu.com/p/ad93bbcb6150