关于CMP为什么要先看年再看月

P1104 生日

dmx7u19x @ 2023-07-25 19:59:13

为什么要这么麻烦,谁来给本蒟蒻解释解释

bool cmp(node a,node b)
{
    if(a.n<b.n)return 1;//先比年
    if(a.n>b.n)return 0;
    if(a.n==b.n)
    {
        if(a.y<b.y)return 1;//再比月
        if(a.y>b.y)return 0;
        if(a.y==b.y)
        {
            if(a.r<b.r)return 1;//再比日
            if(a.r>b.r)return 0;
            if(a.r==b.r)
            {
                if(a.num>b.num)return 1;//最后比编号
                else return 0;
            }
        }
    }
}

先把年、月、日组合起来不行吗?
for(int i=0;i<=n-1;i++)
    {
        int u=a[i].year;
        u=u*100+a[i].mouth;
        u=u*100+a[i].day;
        a[i].u_=u;
    }

然后

bool CMP(stu p1,stu p2)
{
    return p1.u_<p2.u_;
}

不就得了?


by zqyha @ 2023-07-25 20:00:49

自己用的惯就可以


by dmx7u19x @ 2023-07-25 20:01:16

对不起CMP写错了

bool CMP(stu p1,stu p2)
{
    if(p1.u_==p2.u_)return p1.b<p2.b;
    return p1.u_<p2.u_;
}

by dmx7u19x @ 2023-07-25 20:01:48

@zqyha 嗯


|