1028 人口普查 (20 分)
在读入日期时判断该日期是否在合法日期的区间内,如果在,就使其更新最年长的人的出生日期和最年轻的人的出生日期。由于判断日期是否在合法日期区间
内、更新最年长和最年轻的信息都将涉及日期的比较操作,因此不妨写两个比较函数用来比较a与b的日期。
ps:有可能存在所有人的日期都不在合法区间内的情况,这时必须特判输出0,否则会因后面多输出空格而返回“格式错误”。
const int N=1e5+10; struct Node { char name[10]; int year,month,day; bool operator<=(const Node &W) const { if(year == W.year) { if(month == W.month) return day<=W.day; else return month<=W.month; } else return year<=W.year; } bool operator>=(const Node &W) const { if(year == W.year) { if(month == W.month) return day>=W.day; else return month>=W.month; } else return year>=W.year; } }a[N],l,r,youngest,oldest; int n; void init() { l.year=1814,r.year=2014; l.month=r.month=9; l.day=r.day=6; youngest=l,oldest=r; } int main() { init(); cin>>n; int cnt=0; for(int i=0;i<n;i++) { scanf("%s %d/%d/%d",a[i].name,&a[i].year,&a[i].month,&a[i].day); if(a[i] >= l && a[i] <= r) { cnt++; if(a[i] <= oldest) oldest=a[i]; if(a[i] >= youngest) youngest=a[i]; } } if(cnt) cout<<cnt<<' '<<oldest.name<<' '<<youngest.name<<endl; else cout<<0<<endl; //system("pause"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术