题目:1100 校庆 - PAT (Basic Level) Practice (中文) (pintia.cn)
解析:1100 校庆 – PAT乙级真题 – 柳婼 の blog (liuchuo.net)
坑点:
我末尾这样写:
if(cnt==0)cout<<max_all;
else
{
cout<<cnt<<endl;
cout<<max_schid<<endl;
}
如果改成这样就可以全过:
cout<<cnt<<endl;
if(cnt==0)cout<<max_all;
else
{
cout<<max_schid<<endl;
}
因为题目说了要输出两行,也就是无论参宴人里面有没有校友都要输出cnt,如果没有大不了就输出0嘛
#include<bits/stdc++.h>
using namespace std;
string temp,max_class="99999999",max_all="99999999",ans_class,ans_all;
int cnt;
set<string> recode;
int main()
{
int n;cin>>n;
for(int i=0;i<n;i++)
{
cin>>temp;
recode.insert(temp);
}
int m=0;cin>>m;
for(int i=0;i<m;i++)
{
cin>>temp;
if(recode.count(temp))
{
cnt++;
if(max_class>temp.substr(6,8)) //找校园的这段逻辑要包含在recode.count(temp)里面,只有所有人里面出现了校友才能执行这段逻辑
{
max_class=temp.substr(6,8); //找校友最大年龄
ans_class=temp; //统计校友当中最年长的身份证号
}
}
if(max_all>temp.substr(6,8)) //找所有人的这段逻辑要包含在for(m)里面,这样才不会只查询一次。
{
max_all=temp.substr(6,8); //找所有人中最大年龄
ans_all=temp; //统计所有人中最年长的人的身份证号
}
}
cout<<cnt<<endl;
if(cnt)cout<<ans_class;
else cout<<ans_all;
return 0;
}