B1028 人口普查 20分

Prime's Blog發表於2020-11-01

B1028 人口普查 20分


題目描述:
在這裡插入圖片描述
思路:
①看到連線體資訊,馬上想到使用結構體,儲存名字,出生年月日。
②由於需要判斷合法日期,需要比較年、月、日,比較的方法一致,為了方便,直接寫成函式的形式,當需要比較的時候就呼叫函式。
程式碼描述:

#include<cstdio>
struct node{
	char name[10];
	int year,month,day;
}temp,y,l,left,right;
int cot;
bool cmpl(node a,node b)
{
	if(a.year!=b.year) return a.year>=b.year;
	else if(a.month!=b.month) return a.month>=b.month;
	return a.day>=b.day;
}

bool cmpr(node a,node b)
{
	if(a.year!=b.year) return a.year<=b.year;
	else if(a.month!=b.month) return a.month<=b.month;
	return a.day<=b.day;
}

int main()
{
	int n;
	scanf("%d",&n);
	l.year=right.year=2014;
	y.month=right.month=9;
	y.day=right.day=6;
	y.year=left.year=1814;
	l.month=left.month=9;
	l.day=left.day=6;
	while(n--){
		scanf("%s%d/%d/%d",temp.name,&temp.year,&temp.month,&temp.day);
		if(cmpl(temp,left)&&cmpr(temp,right)){
			cot++;
			if(cmpr(temp,l)) l=temp;
			if(cmpl(temp,y)) y=temp;
		}
	}
	if(cot==0) printf("0\n");
	else printf("%d %s %s",cot,l.name,y.name);
	return 0;
}

相關文章