1028 List Sorting (25 分)
题目大意
根据c的不同取值,采取不同的排序方式对结构体进行排序,然后输出。
基本思路
简单的排序问题,直接看代码注释就行。
代码
#include <bits/stdc++.h>
using namespace std;
int n,c;
struct NODE{
int no;
string name;
int score;
};
int cmp1(NODE a,NODE b){
if(c==1){
return a.no<b.no;
}else if(c==2){
if(a.name!=b.name) return a.name<=b.name;
else return a.no<b.no;
}else{
if(a.score!=b.score) return a.score<=b.score;
else return a.no<b.no;
}
}
int main(){
cin>>n>>c;
//定义学生结构体数组
vector<NODE> node(n);
//读入学生信息
for (int i = 0; i < n; ++i) {
cin>>node[i].no>>node[i].name>>node[i].score;
}
//排序
sort(node.begin(),node.end(),cmp1);
//输出
for (int i = 0; i < n; ++i) {
printf("%06d %s %d\n", node[i].no, node[i].name.c_str(), node[i].score);
}
}