5.6测试点不对
  • 板块P1104 生日
  • 楼主Qian_Me
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/12/4 23:03
  • 上次更新2024/12/5 16:41:12
查看原帖
5.6测试点不对
1542712
Qian_Me楼主2024/12/4 23:03

5、6测试点错了,5测试点下载并且试着输入了,结果是对的,但是提交就是现实5.6测试点错了,不知道为什么提交就错了

// 洛谷P1104 生日
// 思路:
// 1. 使用 结构体数组 存储人员信息
// 2. 按照 年龄 进行 排序 --> 使用sort函数,比较函数规则:先按照年,再按照月,再按照日,如果都相等,则先输入的在前
// 3. 输出 结构体数组 中 第 k 个 元素的 姓名
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;

// 定义结构体 --> 存储 姓名 年月日 输入顺序
struct ddd{
    string name;
    int year, month, day;
    int num; // 输入顺序 -> 为了方便排序:若年龄相同,则 先输入的 排在 前面
};
// 比较函数 --> 按照年龄进行排序的规则
bool cmp( ddd a, ddd b ){
    if( a.year != b.year )
        return a.year < b.year; // 年 小的在前 即 年龄大的在前
    else if( a.month != b.month )
        return a.month < b.month; // 月 小的在前 即 年龄大的在前
    else if( a.day != b.day )
        return a.day < b.day; // 日 小的在前,即 年龄大的在前
    else
        return a.num < b.num; // 输入顺序 小的在前 即 如果年龄完全相等,则先输入的在前
}
int main( void ){
    int n; // 总人数
    ddd peo[ 100 ]; // 存储人员信息
    cin >> n; // 输入总人数
     // 输入人员信息
    for( int i = 0; i < n; i ++ ){
        cin >> peo[ i ].name >> peo[ i ].year >> peo[ i ].month >> peo[ i ].day;
        peo[ i ].num = i + 1; // 记录输入顺序
    }
    sort( peo, peo + n, cmp ); // 按照年龄进行排序
    for( int i = 0; i < n; i ++ ){
        cout << peo[ i ].name << endl;
    }
    cout << endl;
    return 0;
}
2024/12/4 23:03
加载中...