PAT 甲级 A1062 (2019/02/15)
Posted zjsaipplp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT 甲级 A1062 (2019/02/15)相关的知识,希望对你有一定的参考价值。
#include<cstdio>
#include<cstring>
#include<algorithm> // STL 使用相关的函数需要include进来
using namespace std;
struct Stu_info{
char id[10];
int de, cai, sum;
int flag;
}stu[100010];
//此函数返回值为bool型,相应的返回 true 或者 false
bool cmp(Stu_info a, Stu_info b) {
if(a.flag != b.flag) return a.flag < b.flag;
else if(a.sum != b.sum) return a.sum > b.sum;
else if(a.de != b.de) return a.de > b.de;
else return strcmp(a.id, b.id) < 0;
}
int main(){
int n, L, H;
scanf("%d%d%d", &n, &L, &H);
int m = n;
for(int i = 0; i < n; i++) {
scanf("%s%d%d", stu[i].id, &stu[i].de, &stu[i].cai);
//总分计算
stu[i].sum = stu[i].de + stu[i].cai;
//判断类别,等地越高,分数越低
if(stu[i].de < L || stu[i].cai < L) {
stu[i].flag = 5;
m--;
}
else if(stu[i].de >= H && stu[i].cai >= H) stu[i].flag = 1;
else if(stu[i].de >= H && stu[i].cai < H) stu[i].flag = 2;
else if(stu[i].de >= stu[i].cai) stu[i].flag = 3;
else stu[i].flag = 4;
}
//通过cmp函数返回的值,来进行 (从大到小) 或者 (从小到大)的排序
sort(stu, stu + n, cmp);
// sort()见sort详解
printf("%d
", m);
for(int i = 0; i < m; i++) {
printf("%s %d %d
", stu[i].id, stu[i].de, stu[i].cai);
}
return 0;
}
sort()函数
bool compare(int a,int b){
return a < b; //从小到大升序排列,如果改为return a > b,则为降序
}
int main(){
int a[20] = {2, 4, 1, 23, 5, 76, 0, 43, 24, 65}, i;
for(i = 0; i < 20; i++)
printf("%d", a[i]);
sort(a, a + 20, compare);
for(i = 0; i < 20; i++)
printf("%d", a[i]);
return 0;
}
以上是关于PAT 甲级 A1062 (2019/02/15)的主要内容,如果未能解决你的问题,请参考以下文章