这道题又一次的戳到了我的盲区;

一定要注意sort和cmp的返回值;
其实可以这么理解;
对于cmp,我们的目的是让数据按照给出的形式进行排序,例如我们想让序列递增,则排序的方式就为:
a<b;这样序列中处处都是a<b;
同理,如果构建了struct,其中包括一个string,我们希望整个序列按照字典序递增,该怎么办?
这个时候就要用到strcmp函数来做辅助;

默认情况下strcmp(a,b),当a的字典序大于b的时候,返回的就是1,等于为0,小于返回-1;
所以如果a>b,则strcamp(a,b)>0
但是我们希望的是递增,也就是a<b,所以对应的情况就是strcamp(a,b)返回-1,所以这个时候应该返回的判定条件就是strcmp(a,b)<0,也就是符合字典序a<b的那种情况;

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
using std::vector;
const int maxn=100010;
struct node{int id;char name[9];int grade;
}mem[maxn];bool cmp1(node a,node b){return a.id<b.id;
}bool cmp2(node a,node b){if(strcmp(a.name,b.name)==0)return a.id<b.id;elsereturn strcmp(a.name,b.name)<0;
}bool cmp3(node a,node b){if(a.grade==b.grade)return a.id<b.id;elsereturn a.grade<b.grade;
}int main(){int n,c;scanf("%d%d",&n,&c);for(int i=0;i<n;i++){scanf("%d %s %d",&mem[i].id,&mem[i].name,&mem[i].grade);}if(c==1){sort(mem,mem+n,cmp1);}else if(c==2){sort(mem,mem+n,cmp2);}else{sort(mem,mem+n,cmp3);}for(int i=0;i<n;i++){printf("%06d %s %d\n",mem[i].id,mem[i].name,mem[i].grade);}system("pause");return 0;
}

PAT A1023 sort cmp字典序比较相关推荐

  1. python sort函数key_Python:s.sort([cmp[, key[, reverse]]])

    展开全部 s.sort([cmp[, key[, reverse]]]) 意思是sort方法接受三个参636f707932313133353236313431303231363533313333326 ...

  2. PAT A1067 Sort with Swap(0, i) ——天街小雨润如酥,草色遥看近却无

    PAT A1067 Sort with Swap(0, i) 本题使用了姥姥教的方法,通过交换过程(第一个开始动的元素,通过一系列交换到达自己应该在的位置)可以发现他们形成了一个闭环,大家手拉手,每个 ...

  3. A - 排名 HDU - 1236 sort(cmp)

    A - 排名 HDU - 1236 cmp 函数写法 strcmp 返回值 #include<bits/stdc++.h> #include<iostream> #includ ...

  4. D - Triangle Partition HDU - 6300 sort(cmp)

    D - Triangle Partition HDU - 6300 题解 由于三点不共线,且三角形不相交,则对坐标排序,输出 #include<bits/stdc++.h> using n ...

  5. C - A problem of sorting HDU - 5427 sort(cmp)

    C - A problem of sorting HDU - 5427 sort 函数用法 cmp 写法 bool cmp(node a, node b){return a.sum > b.su ...

  6. Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝

    1. 类继承 如下代码 class A(object):def show(self):print 'This is calss A'class B(A):def show(self):print 'T ...

  7. (C++)1025 PAT Ranking

    #include<cstdio> #include<algorithm> #include<cstring>using namespace std;const in ...

  8. python set 排序_python set 排序_如何在Python中使用sorted()和sort()

    点击"蓝字"关注我们 ?"Python基础知识" 大卫·丰达科夫斯基  著 18财税3班 李潇潇    译 日期:2019年5月6日 一. 使用sorted() ...

  9. Python中的sort() key含义

    sorted(iterable[, cmp[, key[, reverse]]])iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterable指定要排序 ...

最新文章

  1. 关于web爬虫的tips
  2. swing下拉框从mysql_Java Swing应用程序 JComboBox下拉框联动查询
  3. Linux cp命令:复制文件和目录
  4. JPA学习笔记---JPA理解---第一个JPA程序
  5. 已知原函数和导函数的关系_根据函数表达式该如何求函数值
  6. Java中Properties类的操作配置文件
  7. 松本行弘的程序世界。
  8. pandas从时间序列中判断是一周的第几天或星期几
  9. English--动词时态
  10. C语言设计一个投票程序,c语言程序设计投票程序
  11. JS格式化字符串(两种方法)
  12. 罗技G603鼠标欧姆龙D2FC-F-7N微动开关拆解修复双击问题要点解析
  13. jQ选择器与常用的方法归纳
  14. android sd卡数据恢复,手机sd卡受损怎么办 手机内存卡数据恢复方法【详解】
  15. Mapper未生成impl
  16. 1044 mysql_Mysql的常见几种错误:1045,1044
  17. (附源码)Python宿舍管理系统 毕业设计231642
  18. replace()和replaceAll()的区别
  19. 史上最全 | 计算机视觉2D/3D标注工具汇总!
  20. ZXing 源码分析(简阅)

热门文章

  1. linux远程访问及控制
  2. android gps定位工具类,工具类之LocationUtils(定位工具类)
  3. sftp shell 批量上传文件_shell脚本进行sftp、ftp文件批量上传与下载
  4. 基于php在线相册,基于PHP的图片相册管理分享系统设计
  5. cview类 public_在MFC单文档的View类中,如何获得指向状态栏的指针
  6. c语言cin取字符串,c – 是否可以从cin中读取一个空字符串,并且仍然可以从cin.good()获得真实的字符串?...
  7. python 图表_新手向——制作web图表(基于Python和GooPyCharts)
  8. csrf攻击原理与解决方法_信息安全之CSRF攻击
  9. Windows 命令行大全
  10. 天翼云从业认证(4.8)高性能计算解决方案