摘要:本文主要向大家介绍了C/C++知识点之C语言 · 身份证排序,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之C语言 · 身份证排序,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
算法提高 身份证排序
时间限制:1.0s 内存限制:256.0MB
问题描述
安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位
输入格式
第一行一个整数n,表示有n个身份证号码 余下的n行,每行一个身份证号码。
输出格式
按出生日期从大到小排序后的身份证号,每行一条
样例输入
5466272307503271156215856472207097978234804580401078365404475727700034980710351408803093165
样例输出
404475727700034980234804580401078365215856472207097978710351408803093165466272307503271156
数据规模和约定
n<=100000
1 #include
2 #include
3 #include
4 using namespace std;
5 int cmp(string a, string b){//自定义排序函数
6 string bira = a.substr(6, 8);
7 string birb = b.substr(6, 8);
8 if(bira != birb)
9 return bira > birb;
10 else
11 return a > b;
12 return 0;
13 }
14 int main(){
15 int n;
16 scanf("%d",&n);
17 vector
18 for(int i=0; i<n; i++)
19 cin>>v[i];
20 sort(v.begin(), v.end(), cmp);//调用自己定义的排序函数
21 for(int i=0; i<n; i++)
22 cout<<v[i]<<endl;
23 return 0;
24 }
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号