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

一定要注意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. java 文件下载 【学习记录】
  2. 【Codeforces】401C Team (01010110...)
  3. 猜拳小程序c语言编程,无聊的时候写的猜拳小程序
  4. 大话设计模式(十四 设计模式不能戏说!设计模式怎就不能戏说?)
  5. 【NLP】创建强大聊天机器人的初学者指南
  6. StringBuilder字符串缓冲区
  7. python移动平均线绘图_对python pandas 画移动平均线的方法详解
  8. 对Leader的闲话
  9. recect build 打包发布后访问出现404错误的简易解决方法
  10. No package ‘libmarco-private‘ found
  11. 【Spring Cloud 基础设施搭建系列】Spring Cloud Demo项目 整合Spring Data JPA
  12. 洛谷3373 线段树模板
  13. web浏览器上画图之raphael
  14. Mysql登录数据库,远程登录命令
  15. MacBook pro 连接Wi-Fi时候一直显示需要wpa2密码
  16. 软件测试系列之入门篇(一)
  17. Python中用户界面设计(GUI)
  18. Shell脚本文件头介绍
  19. 宏观看红蓝对抗与渗透测试
  20. 为什么法线贴图大部分是蓝紫色?

热门文章

  1. istqb证书含金量_“性能测试” 领域含金量最高的资格认证:LoadRunner ASP
  2. post 返回代码_减少冗长代码,利用DDT轻松分离测试数据
  3. mysql死锁解决办法
  4. 形象的表述sigmoid的神经网络万能近似定理
  5. tensorflow 加载bert_用NodeJS/TensorFlowJS调用BERT实现文本分类
  6. print输出 pytorch_pytorch 实现打印模型的参数值
  7. python读取json文件转化为list_Python从所有子目录读取JSON文件
  8. 电脑为啥不能测试计算机得分,鲁大师性能测试多少分算好电脑,我的电脑处理器...
  9. signature=c58a3c5e53e2eed44d09cd8589207f96,合同英语
  10. FIO工具测试延迟、带宽、IOPS