PAT 1100 校庆 25分 字符串

99 阅读1分钟

题目: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;
    }

image.png

如果改成这样就可以全过:

  cout<<cnt<<endl;
    if(cnt==0)cout<<max_all;
    else 
    {
  
        cout<<max_schid<<endl;
    }

image.png

因为题目说了要输出两行,也就是无论参宴人里面有没有校友都要输出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;
}