70分求助!!

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

stepz00zy @ 2024-08-02 17:42:23

#include <bits/stdc++.h>

using namespace std;

int stu,alpot[1001],tst;

struct point

{

    string name;

    int y,s,yg;

}a[1001];

int main()

{

    cin>>stu;

    for(int i=1;i<=stu;i++)

    {

        cin>>a[i].name>>a[i].y>>a[i].s>>a[i].yg;

    }//读入

    for(int i=1;i<=stu;i++)

    {

        alpot[i]=a[i].y+a[i].s+a[i].yg;

    }//记录总分

    sort(alpot,alpot+stu+1);//排序

    tst=alpot[stu];

    for(int i=1;i<=stu;i++)

    {

        if(a[i].y+a[i].s+a[i].yg==tst) cout<<a[i].name<<" "<<a[i].y<<" "<<a[i].s<<" "<<a[i].yg;

    }//逐个排查总分是否等于tst

    return 0;

}

求助


by stepz00zy @ 2024-08-02 17:44:42

测试点#1没过,看了测试点没问题 (好像)


by hyl_____ @ 2024-08-02 17:51:07

别人都说了,输出最靠前的辣位童鞋


by hyl_____ @ 2024-08-02 17:51:45

不用排序,直接比较,条件为大于,就能找到最靠前那位


by stepz00zy @ 2024-08-02 17:53:27

补个注释:

    for(int i=1;i<=stu;i++)

    {

        alpot[i]=a[i].y+a[i].s+a[i].yg;

这段是计算所有人的总分并存储至alpot


by stepz00zy @ 2024-08-02 17:56:36

@hyl_____ 已关

求教改(超低级蒟蒻不会)

代码 [求大佬]


by hyl_____ @ 2024-08-02 17:56:59

#include <bits/stdc++.h>

using namespace std;

int stu,alpot[1001],tst=-1;

struct point

{

    string name;

    int y,s,yg;

}a[1001];

int main()

{

    cin>>stu;

    for(int i=1;i<=stu;i++)

    {

        cin>>a[i].name>>a[i].y>>a[i].s>>a[i].yg;

    }//读入

    for(int i=1;i<=stu;i++)

    {

        alpot[i]=a[i].y+a[i].s+a[i].yg;

    }//记录总分

    int the_most;

    for(int i=1;i<=stu;i++)

    {

        if(alpot[i]>tst) 
        {
            tst=alpot[i];
            the_most=i;
        }

    }

    cout<<a[the_most].name<<" "<<a[the_most].y<<" "<<a[the_most].s<<" "<<a[the_most].yg;
    return 0;

}

by stepz00zy @ 2024-08-02 18:03:18


by HuangSiHan3116 @ 2024-08-02 19:42:11

@stepz00zy

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n,ma=-1,mb=-1,mc=-1;//n个学生,
  //ma等于最厉害的学生的语文;
  //mb等于最厉害的学生的数学;
  //mc等于最厉害的学生的英语。
    string mx;//最厉害的学生。
    cin>>n;
    for(long i=1;i<=n;i++){
        string x;//第i个学生。
        long a,b,c;//分数
        cin>>x>>a>>b>>c;//输入
        if((ma+mb+mc)<(a+b+c)){//比一比,是现在那个最厉害的学生厉害还是这个学生厉害,
         //如果是这个学生厉害
            mx=x;
            ma=a;
            mb=b;
            mc=c;
         //把分数换一下,他变成最厉害的学生。
        }
    }
    cout<<mx;
    printf(" %lld %lld %lld\n",ma,mb,mc);//输出
    return 0;
}

by stepz00zy @ 2024-08-05 17:18:31

谢 @HuangSiHan3116


|