EOJ 2849 成绩排序 C++
STL库sort和stable_sort函数
写在前面:
期中考试终于落下了帷幕,我又有时间来做oj题了【捂脸
近期一直在学数据结构,感觉好久没做OJ题了,,
比起写数据结构,我觉得做oj题更需要技巧,然后合理使用库函数很必要。
今天这道题一开始一直WA,以为是sort或stable_sort函数的问题,
最后在论坛大佬指点下终于找到了错误,是字符串比较出现了问题【扶额
不管他能不能看到,在这里,一定要感谢那位老哥,一针见血指出我的问题~
- 出错点:
- 库里的sort函数是不稳定的排序。(所以sort两遍行不通)
两种解决方法:①改写cmp函数,使之可以二级排序;②用两遍stable_sort - 用字符数组存的学号,在比较时直接用 < 来比。
解决方法:使用库函数 strcmp 来比较学号大小(字典序)。
- 参考博客:
- sort函数使用心得
- sort函数对结构体多级排序
- C++排序之stable_sort()的方法
- strcmp
题目:
- 成绩排序
单点时限: 2.0 sec
内存限制: 256 MB
有 n(1⩽n⩽100)个学生的成绩记录,其中包含学号和成绩两项。
按照成绩从高到低顺序输出成绩及格(⩾60)学生的学号和成绩。成绩相同时按照学号从小到大顺序输出。
输入格式
第 1 行:输入一个整数 n,表示学生记录数。
第 2 行 ~ n+1 行:每行是学号(11 位数字)及成绩(0 到 100 之间的整数)。学号和成绩之间有一个空格。
输出格式
按要求输出结果,每行输出一个空格分隔的学号及成绩。
样例
input
5
10002130201 90
10002130230 80
10002130231 85
10002130148 48
10002130167 90
output
10002130167 90
10002130201 90
10002130231 85
10002130230 80
AC的代码:
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;struct Student{char num[12];int grades;
} ;bool cmp(Student stu1, Student stu2){if(stu1.grades>stu2.grades)return true;else if(stu1.grades==stu2.grades){if(strcmp(stu1.num,stu2.num)<0)return true;elsereturn false;}elsereturn false;
}int main(){int n,i;cin>>n;Student stu[n];for(i=0;i<n;i++){cin>>stu[i].num;cin>>stu[i].grades;}sort(stu,stu+n,cmp);for(i=0;i<n;i++){if(stu[i].grades>=60)cout<<stu[i].num<<" "<<stu[i].grades<<endl;}
}
&
看看这“辉煌”的战绩【捂脸
题后感:
其实也没啥感受,就感觉自己挺菜的,然后做题还挺爽的。
emm,还有,找到问题,解决问题的感觉真好~
——2019.4.29 23点34分 于寝室
EOJ 2849 成绩排序 C++相关推荐
- python【蓝桥杯vip练习题库】ADV-290成绩排序
试题 算法提高 成绩排序 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给出n个学生的成绩,将这些学生按成绩排序, 排序规则,优先考虑数学成绩,高的在前:数学相同,英语高的在前:数 ...
- 成绩排序的c语言算法,成绩排序系统(练习排序算法和复习C语言)
成绩排序系统(练习排序算法和复习C语言) 实验一 一.实验目的 1.回顾C语言中的输入.输出及结构体等相关知识点: 2.回顾函数的使用: 3.掌握插入排序.交换排序.选择排序中的常用排序的算法思想: ...
- PTA学生成绩排序-C语言详解
7-72 学生成绩排序 (20分) 给出一组学生名单(姓名和成绩),请输出按成绩从大到小排序后的结果(名次和姓名).成绩相同的人拥有相同的名次,且按姓名的字典序从小到大排列.题目保证学生姓名没有重复. ...
- java 学生成绩排序
编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中. 程序运行效果如图: import java.awt.BorderLayout; i ...
- c语言用链表对学生成绩排序,学生成绩排序和平均分计算利用c语言链表的创建插入删除.doc...
#define NULL 0 #define LEN sizeof(struct student) struct student { long num; float score; struct stu ...
- 1.10 编程基础之简单排序 03 成绩排序 3分 python
http://noi.openjudge.cn/ch0110/03/ """ 1.10 编程基础之简单排序 03 成绩排序 3分 http://noi.openjudge ...
- 分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,如果成绩一样, 那在成绩排序的基础上按照年龄由小到大排序。 姓名(String
代码 import java.util.*;/*3.分别用Comparable和Comparator两个接口对下列四位同学的成绩做降序排序,如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序.姓名 ...
- 信息学奥赛一本通 1178:成绩排序 | OpenJudge NOI 1.10 03:成绩排序
[题目链接] ybt 1178:成绩排序 OpenJudge NOI 1.10 03:成绩排序 [题目考点] 1. 结构体 排序 [君义精讲]排序算法 2. 多关键字排序 方法1:将多关键字的排序条件 ...
- 信息学奥赛一本通(1178:成绩排序)——选择排序
1178:成绩排序 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 29458 通过数: 11916 [题目描述] 给出班里某门课程的成绩单,请你按成绩从高 ...
最新文章
- MVC 源码系列之路由(一)
- C# DataGridView控件用法
- SQL中JOIN 的用法
- TCP/IP WebSocket MQTT
- java socket中的方法_Java中关于Socket的方法与作用详解
- oracle分布式数据库中间件,分布式数据库中间件设想
- WebService的相关概念
- POJ P1185 炮兵阵地 【状压dp】
- 东北大学软件项目管理与过程改进复习提纲(2020)——第四章《项目综合管理》
- 错落有致——集团企业信息化规划原则
- 手把手教你安装Sketch破解版和measure插件 1
- Triple Flips CodeForces - 1072E
- scrapy follow 笔记
- LSD_SLAM 编译、安装到运行demo
- 西南民族大学第十届校赛(同步赛) 个人笔记 题解
- ca根证书校验 java_JAVA-Android-根据CA证书验证X509Certificate(颁发者证书)
- 第二次结对编程——电梯调度算法UI贾伟王伟东
- 计算机默认网关不可用如何解决问题,Win10网络诊断后提示“默认网关不可用”的问题怎么解决?...
- 官宣!1024 程序员节日程发布,第一代程序员求伯君将出席大会
- 1+X 云计算平台运维与开发认证(初级)B