前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【PAT乙级】人口普查

【PAT乙级】人口普查

作者头像
喜欢ctrl的cxk
发布2019-11-08 16:38:32
3870
发布2019-11-08 16:38:32
举报
文章被收录于专栏:Don的成长史Don的成长史

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42449444/article/details/84867268

题目描述:

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。 这里确保每个输入的日期都是合法的,但不一定是合理的-假设已知镇上没有超过200岁的老人,而今天是2014年9月6日,所以超过200岁的生日和未出生的生日都是不合理的,应该被过滤掉。

输入描述:

输入在第一行给出正整数N,取值在(0,105);随后N行,每行给出1个人的姓名(由不超过5个英文字母组成的字符串),以及 按“yyyy / MM / DD”(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。

输出描述:

在一行中顺序输出有效生日的个数,最年长人和最年轻人的姓名,其间以空格分隔。

输入样例:

代码语言:javascript
复制
5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20

输出样例:

代码语言:javascript
复制
3 Tom John

解题思路:

首先,根据题意可知这个人口普查其实就是2个变量而已嘛,一个name,一个birthday,那就直接建立一个person结构体好了。然后根据题目要求这个岛上的人生日在1814/09/06至2014/09/06这个范围内,接下来直接用for循环对输入进行遍历来求解在这个范围内的有效生日并找出最年长和最年轻的人所在的下标就好了。然而!我第一次提交的时候有个测试用例WA了,找了N久之后终于发现当有效个数为0时,后面不能够输出多余的空格。

AC代码:

代码语言:javascript
复制
#include <bits/stdc++.h>
using namespace std;

struct person
{
    string name,birthday;
};

int main()
{
    int n;
    cin >> n;
    string start = "1814/09/06";
    string end = "2014/09/06";
    person p[n];
    int count=0;
    bool flag = true;
    int minIndex,maxIndex;
    for (int i = 0; i < n; i++)
    {
        cin >> p[i].name >> p[i].birthday;
        if(p[i].birthday>=start && p[i].birthday<=end)
        {
            count++;
            if(flag)
            {
                flag = false;
                minIndex = i, maxIndex = i;
            }
            else
            {
                if(p[minIndex].birthday>p[i].birthday)
                {
                    minIndex = i;
                }
                if(p[maxIndex].birthday<p[i].birthday)
                {
                    maxIndex = i;
                }
            }
        }
    }
    if(count != 0)
    {
        cout << count << " " << p[minIndex].name << " " << p[maxIndex].name << endl;
    }
    else  //有效个数为0时,输出0且后面不能有空格
    {
        cout << count << endl;
    }
    return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述:
  • 输入描述:
  • 输出描述:
  • 输入样例:
  • 输出样例:
  • 解题思路:
  • AC代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档