PATA1028 List Sorting
Excel can sort records according to any column. Now you are supposed to imitate this function.
Input Specification:
Each input file contains one test case. For each case, the first line contains two integers N (≤10
5
) and C, where N is the number of records and C is the column that you are supposed to sort the records with. Then N lines follow, each contains a record of a student. A student's record consists of his or her distinct ID (a 6-digit number), name (a string with no more than 8 characters without space), and grade (an integer between 0 and 100, inclusive).
Output Specification:
For each test case, output the sorting result in N lines. That is, if C = 1 then the records must be sorted in increasing order according to ID's; if C = 2 then the records must be sorted in non-decreasing order according to names; and if C = 3 then the records must be sorted in non-decreasing order according to grades. If there are several students who have the same name or grade, they must be sorted according to their ID's in increasing order.
Sample Input 1:
3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
Sample Output 1:
000001 Zoe 60
000007 James 85
000010 Amy 90
Sample Input 2:
4 2
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 98
Sample Output 2:
000010 Amy 90
000002 James 98
000007 James 85
000001 Zoe 60
Sample Input 3:
4 3
000007 James 85
000010 Amy 90
000001 Zoe 60
000002 James 90
Sample Output 3:
000001 Zoe 60
000007 James 85
000002 James 90
000010 Amy 90
开始技术总结:
- 主要就是cmp函数的编写,可以通过编写三个cmp函数来分别对应于三种排序的情况,然后根据输入得到的C值来选择哪个cmp函数应用,我使用的是通过定义一个全局变量C,然后编写一个cmp函数,在cmp函数里面区别三种排序情况。注意如果要使用C来判断,必须把C定义为全局变量。这个函数的参考代码如下:
bool cmp(Student a, Student b) {
if (C == 1) {
return a.id < b.id;
}
else if (C == 2) {
if (strcmp(a.name, b.name) == 0) {
return a.id < b.id;
}
else {
return strcmp(a.name, b.name) < 0;
}
}
else if (C == 3) {
if (a.grade == b.grade) {
return a.id < b.id;
}
else {
return a.grade < b.grade;
}
}
}
所有部分的代码:
//在VS2017上编写,通过PAT测试满分25
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
struct Student {
int id;
char name[10];
int grade;
}stu[100010];
int C;//全局变量用来在cmp函数使用,判定排序方式
bool cmp(Student a, Student b) {
if (C == 1) {
return a.id < b.id;
}
else if (C == 2) {
if (strcmp(a.name, b.name) == 0) {
return a.id < b.id;
}
else {
return strcmp(a.name, b.name) < 0;
}
}
else if (C == 3) {
if (a.grade == b.grade) {
return a.id < b.id;
}
else {
return a.grade < b.grade;
}
}
}
int main() {
int N;//分别记录人数N
scanf("%d%d", &N, &C);
for (int i = 0; i < N; i++) {
scanf("%d%s%d", &stu[i].id, stu[i].name, &stu[i].grade);
}
sort(stu, stu + N, cmp);
for (int i = 0; i < N; i++) {
printf("%06d %s %d\n", stu[i].id, stu[i].name, stu[i].grade);
}
system("pause");
return 0;
}
PATA1028 List Sorting的更多相关文章
- HDU Cow Sorting (树状数组)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2838 Cow Sorting Problem Description Sherlock's N (1 ...
- 1306. Sorting Algorithm 2016 12 30
1306. Sorting Algorithm Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description One of the f ...
- 算法:POJ1007 DNA sorting
这题比较简单,重点应该在如何减少循环次数. package practice; import java.io.BufferedInputStream; import java.util.Map; im ...
- U3D sorting layer, sort order, order in layer, layer深入辨析
1,layer是对游戏中所有物体的分类别划分,如UIlayer, waterlayer, 3DModelLayer, smallAssetsLayer, effectLayer等.将不同类的物体划分到 ...
- WebGrid with filtering, paging and sorting 【转】
WebGrid with filtering, paging and sorting by Jose M. Aguilar on April 24, 2012 in Web Development A ...
- ASP.NET MVC WebGrid – Performing true AJAX pagination and sorting 【转】
ASP.NET MVC WebGrid – Performing true AJAX pagination and sorting FEBRUARY 27, 2012 14 COMMENTS WebG ...
- poj 1007:DNA Sorting(水题,字符串逆序数排序)
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 80832 Accepted: 32533 Des ...
- ural 1252. Sorting the Tombstones
1252. Sorting the Tombstones Time limit: 1.0 secondMemory limit: 64 MB There is time to throw stones ...
- CF#335 Sorting Railway Cars
Sorting Railway Cars time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
随机推荐
- 使用velero进行kubernetes灾备
使用velero可以对集群进行备份和恢复,降低集群DR造成的影响.velero的基本原理就是将集群的数据备份到对象存储中,在恢复的时候将数据从对象存储中拉取下来.可以从官方文档查看可接收的对象存储,本 ...
- [JAVA] 日常填坑 java.lang.SecurityException: Prohibited package name: java.xxx
java虚拟机不允许包名以java开头. https://blog.csdn.net/sinat_28690417/article/details/72328547
- JS 学习笔记
在JS中两个对象不能用“==” 或者“===” 来比较,如果硬是要比较的话,始终返回的是false var x = new String("Bill"); var y = new ...
- 关于thinkphp3.2.3集成phpmailer
关于thinkphp3.2.3集成phpmailer 1 我用的是phpmailer5.1的版本 先把文件解压缩放到这个位置 2 封装到函数里面 function email($email,$tit ...
- VS.NET(C#)--2.4_aspx默认页面模板代码
默认模板代码 客户端浏览器将忽视<script>块间任何字符,不在页面输出.通过<%=DataTime.Now.ToString() %> 将服务端代码放中间 < ...
- 如何在windows 7 上使用docker
在window7上面本来是支持使用docker的, 但是我们可以通过安装docker toolbox来实现在windows7上使用docker. 参考网址: https://docs.docker.c ...
- Django的视图系统:View
一.CBV和FBV FBV:functoin based view,基于函数的view 我们之前写过的都是基于函数的view CBV:class based view,基于类的view 定义CBV: ...
- Jenkins 显示语言-英文切换中文
1.进入插件管理 搜索 Locale 插件并进行安装 2.插件安装成功后进入系统设置 3.在 Locale 中 Default Language 字段填入 zh_CN 并且勾选 Ignore brow ...
- ELK日志系统之kibana的使用操作
1.ELK日志系统打开后,打开kibana的操作界面,第一步创建索引模式: 第2步:创建日志索引 第3步:创建成功 第4步:查看30分钟时间段内的日志数据,也可以查今天的,今月的,今年的 放牛去
- Alipay 支付宝SDK PHP Fatal error: Class 'LtObjectUtil' not found in。
在linux 上运行报错:PHP Fatal error: Class 'LtObjectUtil' not found in. 这是因为人家用的lotusphp框架,和你正在使用的框架冲突了!比如 ...