最厉害的学生题解

现有 N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的字符串,没有空格)、语文、数学、英语成绩(均为不超过 150 的自然数)。总分最高的学生就是最厉害的,请输出最厉害的学生各项信息(姓名、各科成绩)。如果有多个总分相同的学生,输出靠前的那位。
这道题使用结构体排序解的。
先创建结构体,里面包含三科成绩,总分和编号;
输入各科成绩后,把三科加起来算总分,再把编号设为i;
进入排序后:
if(x.sum == y.sum)//判断相等
{
return x.id < y.id;//比较id
}
else
{
return x.sum > y.sum;//正常比较
}
这里首先判断特殊情况,如果sum相等,看编号大小,否则按sum大小排序。

10 个赞

虽然很对,但是建议使用Markdown

7 个赞

老帖开封印

#include <bits/stdc++.h>
using namespace std;
struct node{
    string name; 
    int a,b,c,id;
    int sum;
}x[100005];
bool cmp(node a,node b){
    if(a.sum>b.sum) return true;
    else if(a.sum<b.sum) return false;
    else{
        return true;
    }
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>x[i].name>>x[i].a>>x[i].b>>x[i].c;
        x[i].sum=x[i].a+x[i].b+x[i].c;
        x[i].id=i;
    }
    sort(x+1,x+n+1,cmp);
    cout<<x[1].name<<" "<<x[1].a<<" "<<x[1].b<<" "<<x[1].c;
}

代码附上

1 个赞

这人的这有80分

@Erin @栗子酱 @我命由我不由天

@管理,这里有一堆传奇老帖王

image
逆天

虽然但是这个标题确实很唐

@我命由我不由天 关贴