这是一道入门题,却令我及其的头疼
2023-08-02 21:25:37
发布于:上海
276阅读
0回复
0点赞
这道题是考结构体的应用,所以在该作的准备都做完以后先写结构体:
新老朋友:
#include <iostream>
#include <string>//这行不是必要的,如果你头铁非要用char ch [num];之类的话
#include <algorithm>//这行也不是必要的,如果你够头铁非要自己写快排的话
using namespace std;
结构体:
struct Struct{
    string name;
    int a,b,c,sum=0,id;//a金牌b银牌c铜牌d总牌数
//感谢“末影珍珠”的雪中送炭,不然我永远想不到还需要一个id
}lst[100005];//数组存储选手信息
排序方面最好用 sort() 来逃课,如果自己写快排效率会低很多,而且很费脑子,这是入门题啊!
排序逻辑函数:
int cmp(Struct x,Struct y){
    if(x.sum!=y.sum){
        return x.sum>y.sum;//先思考总数
    }
    else if(x.a!=y.a){
        return x.a>y.a;//再思考金牌数
    }
    else if(x.b!=y.b){
        return x.b>y.b;//然后思考银牌数
    }
    return x.id<y.id;//最后思考输入顺序(写的时候把x.id<y.id写成了x.id>y.id炸毛了好久QWQ)
}
然后是各位艾草狗最高兴的环节:
主函数:
int n;
int main(){
    cin>>n;//首先打野提升一下经济(bushi)
    for(int i=0;i<n;i++){
        Struct t;
        cin>>t.name>>t.a>>t.b>>t.c;
        t.sum=t.a+t.b+t.c;
        t.id=i;
        lst[i]=t;//该输入的输入,该存的存;
    }
    sort(lst,lst+n,cmp);//然后让sort()去对面输出,再让cmp()在后面找机会回一下(doge)
    for(int i=0;i<n;i++){
        cout<<lst[i].name<<" "<<lst[i].sum<<"\n";//注意换行
    }//趁这个时候让cout去偷塔(手动狗头)
    return 0;
}
什么?你还想让我发完整代码?下方小黄车,买一送......啊呸!
全部评论 4
严,你还干写题解?
2023-08-07 来自 上海
1666
2025-05-25 来自 辽宁
0





2025-05-07 来自 浙江
0“什么?你还想让我发完整代码?下方小黄车,买一送......啊呸!”真好笑!
2025-05-07 来自 浙江
0








有帮助,赞一个