为啥子错了

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

CodingTim @ 2024-10-06 20:46:09

直接上代码:

#include<bits/stdc++.h>

using namespace std;

struct Student
{
    string name;
    int chinesePoint;
    int mathsPoint;
    int englishPoint;
};

template <class T>

void Temp(T& a, T& b)
{
    T temp = a;
    a = b;
    b = temp;
}

void SortStudent(vector<Student*>& arr)
{
    int n = arr.size();
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n - i - 1; j++)
        {
            int a = arr[j]->chinesePoint + arr[j]->mathsPoint + arr[j]->englishPoint;
            int b = arr[j + 1]->chinesePoint + arr[j + 1]->mathsPoint + arr[j + 1]->englishPoint;
            if (a > b)
            {
                Temp(arr[j], arr[j + 1]);
            }
        }
    }
}

int main()
{
    int n;
    vector<Student*> v;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        Student* student = new Student();
        cin >> student->name;
        cin >> student->chinesePoint;
        cin >> student->mathsPoint;
        cin >> student->englishPoint;
        v.push_back(student);
    }
    SortStudent(v);
    cout << v.back()->name << " " << v.back()->chinesePoint << " " << v.back()->mathsPoint << " " << v.back()->englishPoint << endl;
    for (int i = 0; i < v.size(); i++)
    {
        delete v[i];
    }
    return 0;
}

为啥不能AC


by are_you_sure @ 2024-10-06 21:01:29

@CodingTim 这个。。。

好像没辣么复杂吧···

结构体学过吧

直接放码,注释在码里


#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
struct stu{//一个结构体,表示学生的信息
    int c,m,e;//分别表示chinese maths english (蒟蒻英语不好勿喷
    string nm;//学生姓名
};
stu a[1005];//那堆学(ju)生(ruo)
int main(){
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);//加快读写速度(抢最优解用的,没什么实际意义...
    int n,mx=-1;//学生数量,最好成绩
    int mxn;//最好成绩是第几个学生
    cin>>n;//输入不解释
    for(int i=0;i<n;i++){
        cin>>a[i].nm>>a[i].c>>a[i].m>>a[i].e;//同样不解释
    }
    for(int i=0;i<n;i++){
        if(a[i].c+a[i].m+a[i].e>mx){//比前面比较牛的学生还牛,改成>=必扣分(题目要求相同就输出靠前的),没扣就是数据太蒻
            mx=a[i].c+a[i].m+a[i].e;//更新最大值
            mxn=i;//记住学生的编号
        }
    }
    cout<<a[mxn].nm<<' '<<a[mxn].c<<' '<<a[mxn].m<<' '<<a[mxn].e;//输出不解释
    return 0;
}

by zqx168 @ 2024-10-07 09:21:28

@are_you_sure

好像也没你那么复杂吧...

#include<bits/stdc++.h>
using namespace std;
struct NOIP{//定义结构体 
    string name;//名字 
    int age,cj;//年龄和成绩 
};
int main(){
    int n;cin>>n;
    NOIP a[n];//数组 
    for(int i=0;i<n;i++){
        cin>>a[i].name>>a[i].age>>a[i].cj;//输入 
        a[i].age++,a[i].cj+=a[i].cj*(0.2);
        if(a[i].cj>600)a[i].cj=600;//调整成员信息 
    }
    for(int i=0;i<n;i++)
        printf("%s %d %d\n",a[i].name.c_str(),a[i].age,a[i].cj);//输出 
}

by are_you_sure @ 2024-10-07 13:20:01

@zqx168 你的好像没法通过诶


by zqx168 @ 2024-10-07 13:30:25

@are_you_sure

抱歉,发错了

#include<bits/stdc++.h>
using namespace std;
struct student{//学生 
    string name;
    int Chineese,Maths,Einglish;//语数英 
};
int main(){
    string name;
    int he=0,flag;//最大分,最大分学号 
    int n;cin>>n;
    student a[n];
    for(int i=0;i<n;i++){
        cin>>a[i].name>>a[i].Chineese>>a[i].Maths>>a[i].Einglish;//输入 
        if(a[i].Chineese+a[i].Einglish+a[i].Maths>he){//判断 
            he=a[i].Chineese+a[i].Einglish+a[i].Maths;
            name=a[i].name;flag=i;//记录 
        }
    }
    printf("%s %d %d %d",a[flag].name.c_str(),a[flag].Chineese,a[flag].Maths,a[flag].Einglish);//输出 
}

|