64分求助!

P1104 生日

Cubexyyy001 @ 2023-07-29 09:47:40

#include<bits/stdc++.h>
using namespace std;
struct birthday
{
    string s;
    int y,m,d;
}a[110];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i].s>>a[i].y>>a[i].m>>a[i].d;
    for(int i=1;i<=n-1;i++)
        for(int j=1;j<=n-i;j++)
        {
            if(a[j].y>a[j+1].y)//年份不相同 
            {
                swap(a[j].s,a[j+1].s);
                swap(a[j].y,a[j+1].y);
                swap(a[j].m,a[j+1].m);
                swap(a[j].d,a[j+1].d);
                continue;
            }
            if(a[j].y==a[j+1].y&&a[j].m>a[j+1].m)//年份相同,月份不相同 
            {
                swap(a[j].s,a[j+1].s);
                swap(a[j].y,a[j+1].y);
                swap(a[j].m,a[j+1].m);
                swap(a[j].d,a[j+1].d);
                continue;
            }
            if(a[j].y==a[j+1].y&&a[j].m==a[j+1].m&&a[j].d>a[j+1].d)//年、月相同,日不相同 
            {
                swap(a[j].s,a[j+1].s);
                swap(a[j].y,a[j+1].y);
                swap(a[j].m,a[j+1].m);
                swap(a[j].d,a[j+1].d);
                continue;
            }
            if(a[j].y==a[j+1].y&&a[j].m==a[j+1].m&&a[j].d==a[j+1].d)//都相同 
            {
                swap(a[j].s,a[j+1].s);
                swap(a[j].y,a[j+1].y);
                swap(a[j].m,a[j+1].m);
                swap(a[j].d,a[j+1].d);
                continue;
            }
        }
    for(int i=1;i<=n;i++)cout<<a[i].s<<endl;
    return 0;
}

by Rieman_sum @ 2023-07-29 09:53:14

建议用sort


by Rieman_sum @ 2023-07-29 09:55:20

在结构体里面开一个pos变量,记录是第几个输入的,然后如果年月日都相同的话,判断pos大小


by Cubexyyy001 @ 2023-07-29 10:03:33

@Guo1 我试一下


by Cubexyyy001 @ 2023-07-29 10:40:53

@Guo1 谢谢,100分了


|