PAT初级1028(C++)
PAT初级1028题目:思路:遍历(从有效生日开始的)时间比较,获得年长和年轻的人。(当前有效生日和最年长/年轻的生日比较)时间较小的相对年纪较大,生日2014年9月6号之后的无效,1814年9月6号之前的无效。1.排除无效生日2.从当前有效生日开始遍历寻找最值3.当所有生日均无效时,仅输出0Plus:“2014年9月6号”和”1814年9月6号“都包括在内代码:# include<iost
·
PAT初级1028
题目:
思路:
遍历(从有效生日开始的)时间比较,获得年长和年轻的人。(当前有效生日和最年长/年轻的生日比较)
时间较小的相对年纪较大,生日2014年9月6号之后的无效,1814年9月6号之前的无效。
1.排除无效生日
2.从当前有效生日开始遍历寻找最值
3.当所有生日均无效时,仅输出0
Plus:
“2014年9月6号”和”1814年9月6号“都包括在内
代码:
# include<iostream>
# include<cstring>
using namespace std;
int main()
{
int N=0;
cin>>N;
int Year[N],Month[N],Day[N];
string date="";
string name[N];
for(int n=0;n<N;n++)
{
cin>>name[n]>>date;
Year[n]=stoi(date.substr(0,4));
Month[n]=stoi(date.substr(5,7));
Day[n]=stoi(date.substr(8,10));
}
int maxi=0,mini=-1,sumi=0;
for(int i=0;i<N;i++)
{
if(Year[i]<1814||Year[i]>2014)
{
continue;
}
else if(Year[i]==1814&&Month[i]<9)
{
continue;
}
else if(Year[i]==1814&&Month[i]==9&&Day[i]<6)
{
continue;
}
else if(Year[i]==2014&&Month[i]>9)
{
continue;
}
else if(Year[i]==2014&&Month[i]==9&&Day[i]>6)
{
continue;
}
else
{
sumi++;
if(sumi==1)
{
mini=i;
maxi=i;
}
}
if(Year[i]>Year[mini])
{
mini=i;
}
else if(Year[i]==Year[mini])
{
if(Month[i]>Month[mini])
{
mini=i;
}
else if(Month[i]==Month[mini])
{
if(Day[i]>Day[mini])
{
mini=i;
}
}
}
if(Year[i]<Year[maxi])
{
maxi=i;
}
else if(Year[i]==Year[maxi])
{
if(Month[i]<Month[maxi])
{
maxi=i;
}
else if(Month[i]==Month[maxi])
{
if(Day[i]<Day[maxi])
{
maxi=i;
}
}
}
}
if(sumi==0)
{
cout<<sumi<<endl;
}
else
{
cout<<sumi<<" "<<name[maxi]<<" "<<name[mini]<<endl;
}
return 0;
}
优化:
各个功能模块可写成函数,以简化代码
结果:
PLus(搬运他人):
https://blog.csdn.net/qq_45949701/article/details/120069760
https://blog.csdn.net/bawangtu/article/details/81176505
更多推荐
已为社区贡献1条内容
所有评论(0)