zoukankan      html  css  js  c++  java
  • 蓝桥杯 身份证排序 排序

    问题描述
      安全局搜索到了一批(n个)身份证号码,希望按出生日期对它们进行从大到小排序,如果有相同日期,则按身份证号码大小进行排序。身份证号码为18位的数字组成,出生日期为第7到第14位
    输入格式
      第一行一个整数n,表示有n个身份证号码
      余下的n行,每行一个身份证号码。
    输出格式
      按出生日期从大到小排序后的身份证号,每行一条
    样例输入
    5
    466272307503271156
    215856472207097978
    234804580401078365
    404475727700034980
    710351408803093165
    样例输出
    404475727700034980
    234804580401078365
    215856472207097978
    710351408803093165
    466272307503271156
    数据规模和约定
      n<=100000
    以前只知道sort函数可以对字母字符串比较大小,其实sort函数也可以对数字字符串比较大小。
    原理是相通的,都是依据这个字符的ascii码的大小。
    然后就是怎样存下来,刚开始想定义一个结构体,存储原身份证以及提取出出生日期。
    其实一个string数组就够了。
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 string s[100010];
     4 bool cmp(string a, string b) {
     5     string a1 = a.substr(6,8);
     6     string b1 = b.substr(6,8);
     7     if (a1 == b1) {
     8         return a > b;
     9     } else {
    10         return a1 > b1;
    11     }
    12 }
    13 int main() {
    14     int n;
    15     cin >> n;
    16     for (int i = 0; i < n;i++) {
    17         cin >> s[i];
    18     }
    19     sort(s, s + n, cmp);
    20     for (int i = 0; i < n;i++) {
    21         cout << s[i] << endl;
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    高效算法——D 贪心,区间覆盖问题
    高效算法——C 分饼
    高效算法——A 归并排序
    高效算法——Most financial institutions 贪心 H
    高效算法——E
    高效算法——Bin Packing F
    POJ2192
    UVa11584
    POJ2429
    POJ1811- Prime Test(Miller–Rabin+Pollard's rho)
  • 原文地址:https://www.cnblogs.com/fx1998/p/12742187.html
Copyright © 2011-2022 走看看