PAT乙级1028

91 阅读1分钟

image.png 用一个结构体数组去存数据。让人开心的是他输入的数据全部的一个格式的,也就是说可以直接使用<>=来比较日期四位大小,是否合法。你或许会想到使用一些函数,比如compare(),但是这里可以直接使用<>=其实他是按照字典序大小来比较的。

//foreverking
#include <vector>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;

const int N = 1E5;

struct person
{
    /* data */
    string name;
    string date; //生日
};

string maxname, minname;
string maxbirth = "1814/09/06", minbirth = "2014/09/06";
int cnt;

int main()
{
    int n;
    cin >> n;
    person s[n];
    for (int i = 0; i < n; i++)
    {
        // person l;
        // cin >> l.name >> l.date;
        // s[i] = l;
        //代码
        cin >> s[i].name >> s[i].date;
    }
    
    for (int i = 0; i < n; i++)
    {
        /* code */
        if (s[i].date >= "1814/09/06" && s[i].date <= "2014/09/06")
        {
            cnt++;

            if (s[i].date >= maxbirth)
            {
                maxbirth = s[i].date;
                maxname = s[i].name;
            }
            if (s[i].date <= minbirth)
            {
                minbirth = s[i].date;
                minname = s[i].name;
            }
        }
    }
    cout << cnt;
    if (cnt != 0)
        cout << " " << minname << " " << maxname;
    cout << endl;
    return 0;
}

当然你也可以不用结构体,直接用两个字符串name,date来存数据,每次覆盖掉就行。

#include <iostream>
using namespace std;
int main()
{
    int n, cnt = 0;
    cin >> n;
    string name, date, maxname, minname, maxbirth = "1814/09/06", minbirth = "2014/09/06";
    for (int i = 0; i < n; i++)
    {
        cin >> name >> date;
        if (date >= "1814/09/06" && birth <= "2014/09/06")
        {
            cnt++;
            if (date >= maxbirth)
            {
                maxbirth = date`;
                maxname = name;
            }
            if (date <= minbirth)
            {
                minbirth = date;
                minname = name;
            }
        }
    }
    cout << cnt;
    if (cnt != 0)
        cout << " " << minname << " " << maxname;
    return 0;
}

除此之外,你甚至可以用int来存数据,就是过程比较麻烦而已。 题目链接