给的数据能对,自己随便写的一组数据不对?求大佬解惑
  • 板块P1104 生日
  • 楼主July_melon
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/1/25 22:57
  • 上次更新2023/10/24 03:04:55
查看原帖
给的数据能对,自己随便写的一组数据不对?求大佬解惑
922141
July_melon楼主2023/1/25 22:57
#include <stdio.h>
#include <stdlib.h>
char name[105][30];
int year[105];
int month[105];
int day[105];
int index[105];
int cmp(const void*,const void*);
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0; i<n; i++)
    {
        scanf(" %s",name[i]);
        scanf("%d%d%d",&year[i],&month[i],&day[i]);
    }
    for(int i=0; i<105; i++)
        index[i]=i;
    qsort(index,n,sizeof(index[0]),cmp);
    for(int i=0; i<n; i++)
        printf("%s\n",name[index[i]]);
    return 0;

}

int cmp(const void*i1,const void*i2)
{
    int v1=*(int *)i1;
    int v2=*(int *)i2;
    if(year[v1]>year[v2])
        return 1;
    if(year[v1]<year[v2])
        return -1;
    if(year[v1]==year[v2])
    {
        if(month[v1]>month[v2])
            return 1;
        if(month[v1]<month[v2])
            return -1;
        if(month[v1]==month[v2])
        {
            if(day[v1]>=day[v2])
                return 1;
            else
                return -1;
        }
    }
}

这样一个代码能过所有的测试点,但是我自己随便写的一组数据如:3 liu 1992 4 20 huang 1992 4 20 ye 1992 4 23排序就不符合要求。。。而且我发现在第五个数据点中是能实现后输入的先输出的,这里就不能了,为什么呢?求大佬解惑

2023/1/25 22:57
加载中...