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

清风雪月

2021-09-24 18:14:48

Personal

第三篇不可提交题解的题解第三篇文章 ------------ 进入正题 ------------ 这是一道很明显的排序~~水~~题\ 每个学生一共包括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; } ```