蓝桥杯 算法提高 身份证排序
来源:互联网 发布:gal翻译软件 编辑:程序博客网 时间:2024/05/17 04:32
算法提高 身份证排序
时间限制:1.0s 内存限制:256.0MB
问题描述
安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位
输入格式
第一行一个整数n,表示有n个身份证号码
余下的n行,每行一个身份证号码。
余下的n行,每行一个身份证号码。
输出格式
按出生日期从大到小排序后的身份证号,每行一条
样例输入
5
466272307503271156
215856472207097978
234804580401078365
404475727700034980
710351408803093165
466272307503271156
215856472207097978
234804580401078365
404475727700034980
710351408803093165
样例输出
404475727700034980
234804580401078365
215856472207097978
710351408803093165
466272307503271156
234804580401078365
215856472207097978
710351408803093165
466272307503271156
数据规模和约定
n<=100000
注意审题!!!!
1.希望按出生日期对它们进行从大到小排序
2.如果有相同日期,则按身份证号码大小进行排序。
3.身份证号码为18位的数字组成,出生日期为第7到第14位
#include<iostream>#include<vector>#include<algorithm>#include<string>using namespace std;int cmp(string a,string b){string suba=a.substr(6,8); //获取a的字串,从第六个字符起长度为8,注意下标从0开始。 string subb=b.substr(6,8); //同理 if(suba>subb) //降序排序 return 1;else if(suba<subb) return 0;elsereturn a>b;}int main(){int n,i; //n个身份证号码 cin >>n;string s; vector<string>vs; vs.reserve(n); //还可以预先分配容量,提高效率for(i=0;i<n;i++){cin >>s;vs.push_back(s);}sort(vs.begin(),vs.end(),cmp); //sort()函数第三个参数省略的话默认是升序,如果不省略 ,就是自己另写一个比较函数,注意不用cmp(),而是cmp。 for(i=0;i<n;i++){cout <<vs[i]<<endl;}return 0;}
阅读全文
0 0
- 蓝桥杯算法提高 身份证排序
- 蓝桥杯 算法提高 身份证排序
- 算法提高 身份证排序
- 算法提高 身份证排序
- 蓝桥杯ADV-172 算法提高 身份证排序
- 蓝桥杯 算法提高 选择排序
- 蓝桥杯 算法提高 插入排序
- 蓝桥杯-身份证排序
- 蓝桥杯_算法提高_身份证升级(简单字符处理)
- 蓝桥杯 ADV-131算法提高 选择排序
- 蓝桥杯 算法提高 三个整数的排序
- 蓝桥杯 算法提高 三个整数的排序
- 蓝桥杯 算法提高 12-2扑克排序
- 蓝桥杯 算法提高 三个整数的排序
- 蓝桥杯 算法提高 12-2扑克排序
- 算法提高 插入排序
- 算法提高 选择排序
- 算法提高 选择排序
- 数据结构第二周项目-多文件组织
- FTPrep, 104 Maximum Depth of Binary Tree
- leetcode-394. Decode String
- Java-排序算法之选择排序算法
- 5th IP address restore
- 蓝桥杯 算法提高 身份证排序
- Leetcode : Scramble String
- Ubuntu 14.04 64位上安装Valgrind 3.13.0 操作步骤
- 【Linux命令】文件基本属性
- layui 表单验证旧密码是否输入正确(验证用户名是否被使用,也可以用这种方法)
- String 类的indexof()方法相关
- Linux基础复习
- 网络编程释疑之:同步,异步,阻塞,非阻塞
- epoch、 iteration和batchsize