首页 > 学院 > 开发设计 > 正文

蓝桥杯算法提高 身份证排序

2019-11-14 11:46:51
字体:
来源:转载
供稿:网友

原题:

  算法提高 身份证排序  时间限制:1.0s   内存限制:256.0MB    问题描述  安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位输入格式  第一行一个整数n,表示有n个身份证号码  余下的n行,每行一个身份证号码。输出格式  按出生日期从大到小排序后的身份证号,每行一条样例输入5466272307503271156215856472207097978234804580401078365404475727700034980710351408803093165样例输出404475727700034980234804580401078365215856472207097978710351408803093165466272307503271156数据规模和约定  n<=100000代码:

#include <algorithm>#include <iostream>#include <string.h>using namespace std;int cmp(string a,string b){    string a1 = a.substr(6,8);    string b1 = b.substr(6,8);    if(a1 == b1)        return a > b;    else        return a1 > b1;}int main(){    int n;    cin>>n;    string str[n];    for(int i = 0;i < n;i++)        cin>>str[i];    sort(str,str + n,cmp);    for(int i = 0;i < n;i++)        cout<<str[i]<<endl;    return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表