90分求助!! 第一个点RE,vscode显示结构体有出现问题

P5740 【深基7.例9】最厉害的学生

lengty @ 2023-11-17 23:08:55

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

struct student
{
    string name;
    int score;
    int chinese;
    int maths;
    int English;
}sst[1005];
bool cmp(student a,student b)
{
    return a.score<=b.score;
}

int main()
{
    cin>>n;
    for (int i = 0; i < n; i++)
    {
        cin>>sst[i].name>>sst[i].chinese>>sst[i].maths>>sst[i].English;
        sst[i].score = sst[i].chinese+sst[i].maths+sst[i].English;
    }
    sort(sst,sst+n,cmp);
    cout<<sst[n-1].name<<" "<<sst[n-1].chinese<<" "<<sst[n-1].maths<<" "<<sst[n-1].English;
    system("pause");
    return 0;
}

by Terrible @ 2023-11-17 23:15:12

问题出在

bool cmp(student a,student b)
{
    return a.score<=b.score;
}

把等于号去掉。

必须满足严格弱序关系。


by Terrible @ 2023-11-17 23:17:02

cmp 应当理解为小于<,不可以写小于等于<=。

如果存在 cmp(a,b)==1cmp(b,a)==1 就会出 RE。


by lengty @ 2023-11-22 15:22:31

@Terrible 谢谢大佬!!!


|