1028 List Sorting (25)(25 分)

Excel can sort records according to any column. Now you are supposed to imitate this function.

Input

Each input file contains one test case. For each case, the first line contains two integers N (<=100000) 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

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

题目大意:excel表格可以根据任一行排序,模拟excel的排序。

#include <stdio.h>
#include<iostream>
#include <algorithm>
using namespace std;
struct Stu{
string id,name;
int score;
}stu[];
int m;
bool cmp(Stu& a,Stu& b){
if(m==)
return a.id<b.id;
else if(m==){
if(a.name<b.name)
return true;
else if(a.name==b.name)
return a.id<b.id;
}
else if(m==){
if(a.score<b.score)
return true;
else if(a.score==b.score)
return a.id<b.id;
}
return false;
}
int main() {
int n;
cin>>n>>m;
for(int i=;i<n;i++){
cin>>stu[i].id>>stu[i].name;
cin>>stu[i].score;
}
sort(stu,stu+n,cmp);
for(int i=;i<n;i++)
cout<<stu[i].id<<" "<<stu[i].name<<" "<<stu[i].score<<"\n";
return ;
}

//这样写的代码,可以在牛客网上通过,但是在pat上有最后一个测试点运行超时。应该是因为使用string比较,超时了,应该把它们作为int 来比较,所以说c++ 中带的string比较复杂度较高。

#include <stdio.h>
#include<iostream>
#include <algorithm>
#include<string.h>
using namespace std;
struct Stu{
char name[];
int id,score;
}stu[];
int m;
bool cmp(Stu& a,Stu& b){
if(m==)
return a.id<b.id;
else if(m==){
if(strcmp(a.name,b.name)==)
return a.id<b.id;
else
return strcmp(a.name,b.name)<=;
}
else if(m==){
if(a.score<b.score)
return true;
else if(a.score==b.score)
return a.id<b.id;
}
return false;
}
int main() {
int n;
scanf("%d%d",&n,&m);
for(int i=;i<n;i++){
scanf("%d%s%d",&stu[i].id,&stu[i].name,&stu[i].score);
}
sort(stu,stu+n,cmp);
for(int i=;i<n;i++)
printf("%06d %s %d\n",stu[i].id,stu[i].name,stu[i].score);
return ;
}

代码改成了这样,但是一开始我根据题意,name不超过8个字符,我就定义了字符数组是name[8],只通过了3个点,将其改为10,就通过了。懂了!因为如果正好有8个字符,但是不能放最后一个结束符,这就出现了问题,不符合字符数组的定义了!

1.字符数组

题中之所以改为10,是因为使用的字符串%s输入,比如可以直接用char c[ ]="C program";来初始化字符数组,但此时c的长度是10不是9,因为字符串常量的最后由系统加上一个'\0',所以字符数组c中不得不存储了一个'\0'表示结束。

2.strcmp函数用法

当s1>s2时,返回为正数;

当s1=s2时,返回值为0;

当s1<s2时,返回为负数;

返回的号与字符数组的方向是一致的,不一定是1或-1的(C中并没有规定)。

比较的是ASCII字符的大小,

#include <stdio.h>
#include<iostream>
#include<string.h>
using namespace std; int main() {
char a[]={'a','a'};
char b[]={'A','A'};//由于在ASCII中,A的号是65,而a是97
cout<<strcmp(a,b);//所以a是大于b的。
//应该输出一个正数才对。
return ;
}//输出结果为1.

PAT 1028 List Sorting[排序][一般]的更多相关文章

  1. PAT 1028 List Sorting (25分) 用char[],不要用string

    题目 Excel can sort records according to any column. Now you are supposed to imitate this function. In ...

  2. PAT 1028. List Sorting

    #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> ...

  3. PAT 甲级 1028 List Sorting (25 分)(排序,简单题)

    1028 List Sorting (25 分)   Excel can sort records according to any column. Now you are supposed to i ...

  4. PAT (Advanced Level) Practice 1028 List Sorting (25 分) (自定义排序)

    Excel can sort records according to any column. Now you are supposed to imitate this function. Input ...

  5. PAT甲题题解-1028. List Sorting (25)-水排序

    #include <iostream> #include <cstdio> #include <algorithm> #include <string.h&g ...

  6. PAT 甲级 1028. List Sorting (25) 【结构体排序】

    题目链接 https://www.patest.cn/contests/pat-a-practise/1028 思路 就按照 它的三种方式 设计 comp 函数 然后快排就好了 但是 如果用 c++ ...

  7. 【PAT】1028. List Sorting (25)

    题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1028 题目描述: Excel can sort records according to an ...

  8. PAT A1028 List Sorting (25 分)——排序,字符串输出用printf

    Excel can sort records according to any column. Now you are supposed to imitate this function. Input ...

  9. 【PAT甲级】1028 List Sorting (25 分)

    题意: 输入一个正整数N(<=100000)和C(C属于{1,2,3}),接下来输入N行,每行包括学生的六位学号(习惯用string输入,因为可能有前导零),名字和成绩(正整数).输出排序后的信 ...

随机推荐

  1. vue案例 - 使用vue实现自定义多选与单选的答题功能

    4月底立得flag,五月底插上小旗,结果拖到六月底七月初才来执行.说什么工作忙都是借口,就是睡的比猪早,起的比猪晚. 本来实现多选单选这个功能,vue组件中在表单方面提供了一个v-model指令,非常 ...

  2. jQuery队列(三)

    看了一下队列剩下的几个方法,在没有应用场景的情况下,对它所做的一些处理不能明白.后续希望可以通过动画部分代码的阅读能搞清楚这些处理的意义.jQuery.fn.extend({ // 推迟队列中函数的执 ...

  3. vs2017编译网狐荣耀服务端的心得

    1.找不到d3dx9.h 从D:\Microsoft DirectX SDK (June 2010)\Include复制 d3dx9.hd3dx9anim.hd3dx9core.hd3dx9effec ...

  4. 题目1162:I Wanna Go Home(最短路径问题进阶dijkstra算法))

    题目链接:http://ac.jobdu.com/problem.php?pid=1162 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  5. Android 源码下载,国内 镜像

    AOSP(Android) 镜像使用帮助 https://lug.ustc.edu.cn/wiki/mirrors/help/aosp 首先下载 repo 工具. mkdir ~/bin PATH=~ ...

  6. DragonBones龙骨换装(局部换装+全局换装)

    参考: Egret官方换装动画 Egret换装三种方式 CSDN(全局换装) egret使用DragonBones实现简单的换装 换装,主要是替换任意插槽的图片,来达到局部换装的目的. 游戏中可以只制 ...

  7. Mysql [Err] 1292 - Truncated incorrect DOUBLE value: 'a'

    报错信息: [SQL] UPDATE 表 set times = 1 where type = 1 and times = 0 [Err] 1292 - Truncated incorrect DOU ...

  8. Unity3D笔记 英保通十 射线碰撞器检测

    射线碰撞检测可以用来检测方向和距离: 通过Physics.RayCast光线投射来实现:常用于射击利用发射的射线来判断.还有对战中刀剑交战中.. 一.要涉及到RayCast和RayCastHit 1. ...

  9. 理解Buffer

    Buffer对象是Node.js用来处理二进制数据的一个接口.JavaScript比较擅长处理Unicode数据,对于处理二进制格式的数据(比如TCP数据流),就不太擅长.Buffer对象就是为了解决 ...

  10. 7.22 python线程(3)

    2018-7-22 10:28:29 回来啦! 6.条件 # !/usr/bin/env python # !--*--coding:utf-8 --*-- # !@Time :2018/7/20 1 ...