此类问题一般是输入N个学生的个人信息,一般包括学生的姓名、学号、年纪、成绩......这些信息,我们将每个学生的这些信息组合起来,利用Struct声明一个结构体,将它的信息作为其成员变量。
然后我们根据它的排序要求编写进行计较规则的方法,取名cmp()。再调用系统的sort函数即可(需要加声明:#include<algorithm>)。通过几个例题来看一下这类问题的解题思路。
提示:完整的题目可以参看牛客网在线编程栏目。
1、题目描述:有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。
参考代码:
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
struct stu{
string name;
int age;
int score;
};
bool cmp(stu s1, stu s2){
if(s1.score < s2.score){
return true;
}
if(s1.score == s2.score){
if(s1.name < s2.name){
return true;
}
else if(s1.name == s2.name){
return s1.age < s2.age;
}
}
return false;
}
int main(){
int n;
while(cin >> n){
vector<stu&