概述
一开始我是用string字符串做的,但只得到15分,最后是运算超时。
贴一下代码:
#include<iostream>
#define maxn 100005
using namespace std;
struct nood{
string name;
string days;
int num;
};
int main()
{
int n;
nood c[maxn];
cin>>n;
//string s;
//string s1="2014/09/06",s2="1814/09/06";
int m=0;
int q,p;
string ymin="9999/99/99",ymax="0000/00/00";
for(int i=0;i<n;i++)
{
//scanf("%s",c[i].name);
cin>>c[i].name;
cin>>c[i].days;
//c[i].days=s;
if(c[i].days>s1||c[i].days<s2)
{
m++;
}
else{
if(c[i].days>ymax)
{
ymax=c[i].days;
q=i;
}
if(c[i].days<ymin)
{
ymin=c[i].days;
p=i;
}
}
}
cout<<n-m<<" "<<c[p].name<<" "<<c[q].name<<endl;
return 0;
}
后来看到大神用一种方法,把字符串变成一个数,这样,题目好解太多,不用再管有多少天了,是不是润年等等。
ac要注意可能一个人都不符合条件。
贴上代码:
#include<iostream>
#define maxn 100005
using namespace std;
struct nood{
string name;
int year,month,day;
};
nood c[maxn];
int main()
{
int n;
cin>>n;
int m=0;
int max=20140906;
int min=18140906;
int maxium=0;
int minium=99999999;
int q,p;
for(int i=0;i<n;i++)
{
cin>>c[i].name;
scanf("%d/%d/%d",&c[i].year,&c[i].month,&c[i].day);
int g=(c[i].year*10000+c[i].month*100+c[i].day);
if(g>max||g<min)
m++;
else
{
if(g>maxium)
{
q=i;
maxium=g;
}
if(g<minium)
{
p=i;
minium=g;
}
}
}
if(n-m!=0)
cout<<n-m<<" "<<c[p].name<<" "<<c[q].name<<endl;
else
cout<<"0"<<endl;
return 0;
}
最后
以上就是激昂微笑为你收集整理的PAT 乙级 1028的全部内容,希望文章能够帮你解决PAT 乙级 1028所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复