P5740 【深基7.例9】最厉害的学生 题解
清风雪月
2021-09-24 18:14:48
第三篇不可提交题解的题解第三篇文章
------------
进入正题
------------
这是一道很明显的排序~~水~~题\
每个学生一共包括6个元素,分别是名字,语文成绩,数学成绩,英语成绩,编号和总成绩,这么多元素,显然结构体是最适用的
```
struct xs{
int a,b,c,z,h;
string m;
};
```
a,b,c分别是语文,数学,英语,z为总成绩,h为编号,m为名字
------------
接下来是重头戏!!!\
在这种很多数据的题目,系统本身的sort不是非常的适用(当然你也可以用,你要用我不反对,因为这也可以,但是我不用)\
因为数据比较小,因此这里我选用了冒泡排序,根据总量和编号来排序
```
for(int i=1;i<n;i++)记住千万不要写等于号
for(int j=i+1;j<=n;j++)
{
if(q[i].z<q[j].z)swap(q[i],q[j]);
else if(q[i].z==q[j].z)
{
if(q[i].h>q[j].h)swap(q[i],q[j]);
}
}
```
------------
下面上代码,没有注释,想复制请先看一看解析再领代码哦
```
//~柠月~
#include<bits/stdc++.h>
using namespace std;
struct xs{
int a,b,c,z,h;
string m;
};
xs q[1001];
int n;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
q[i].h=i;
cin>>q[i].m>>q[i].a>>q[i].b>>q[i].c;
q[i].z=q[i].a+q[i].b+q[i].c;
}
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
{
if(q[i].z<q[j].z)swap(q[i],q[j]);
else if(q[i].z==q[j].z)
{
if(q[i].h>q[j].h)swap(q[i],q[j]);
}
}
cout<<q[1].m<<" "<<q[1].a<<" "<<q[1].b<<" "<<q[1].c;
return 0;
}
```