RE,本地能跑出来,是不是sort的问题
  • 板块工单反馈版
  • 楼主zgrx
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/12 17:37
  • 上次更新2024/12/12 17:40:42
查看原帖
RE,本地能跑出来,是不是sort的问题
1110130
zgrx楼主2024/12/12 17:37

思路:看了题解的“通过把年+月+日摞成一个数字(生日数),比较生日数的大小来决定输入输出顺序”这个想法以后决定自己实现一下

为方便大家阅读我写了一些注释。

#include <bits/stdc++.h>
using namespace std;

int n;
struct Student {
    string name;
    int year, month, day, number;
    long long sum;
}a[101];

int main() {
    cin >> n;

    // 输入学生的出生日期
    //为了实现“如果有两个同学生日相同,输入靠后的同学先输出”我加入了一个number
    for (int i = 0; i < n; i++) {
        cin >> a[i].name >> a[i].year >> a[i].month >> a[i].day;
        a[i].number = n - i; // 输入顺序,靠后的值大
    }

    // 计算生日数sum
    for (int i = 0; i < n; i++) {
        a[i].sum = a[i].year * 10000 + a[i].month * 100 + a[i].day;
    }

    // 用sort排序
    sort(a, a + n, [](const Student &x, const Student &y) {
        if (x.sum != y.sum) 
            return x.sum < y.sum; 
        return x.number > y.number;
    });
  //最后输出
    for (int i = 0; i < n; i++) {
        cout << a[i].name << endl;
    }

    return 0;
}

2024/12/12 17:37
加载中...