解题思路:
自定义二级排序,优先比出生年月。
参考代码 ① :
#include<bits/stdc++.h> /* 525 ms 使用 string */ using namespace std; const int len = 100010; struct person { string num; string bro; } datas[len]; int cmp(person perst, person pernd) { if (perst.bro == pernd.bro) return perst.num > pernd.num; else return perst.bro > pernd.bro; } int main() { int num; cin >> num; for (int i = 0; i < num; i++) { datas[i].num.resize(19); scanf("%s", &datas[i].num[0]); datas[i].bro = datas[i].num.substr(6, 8); } sort(datas, datas + num, cmp); for (int i = 0; i < num; i++) puts(datas[i].num.c_str()); }
参考代码 ② :
#include<bits/stdc++.h> /* 176 ms 使用 C 风格字符串 */ using namespace std; const int len = 100010; struct person { char num[19]; char bro[9]; } datas[len]; int cmp(person perst, person pernd) { if (!strcmp(perst.bro, pernd.bro)) return strcmp(perst.num, pernd.num) > 0; else return strcmp(perst.bro, pernd.bro) > 0; } void cpy(char num[], char bro[]) { int bro_num = 6, index = 0; while (bro_num < 14) bro[index++] = num[bro_num++]; } int main() { int num; scanf("%d", &num); for (int i = 0; i < num; i++) { scanf("%s", datas[i].num); cpy(datas[i].num, datas[i].bro); } sort(datas, datas + num, cmp); for (int i = 0; i < num; i++) puts(datas[i].num); }
0.0分
8 人评分
Pascal三角 (C语言代码)浏览:1182 |
WU-字符串比较 (C++代码)浏览:754 |
C语言考试练习题_保留字母 (C语言代码)浏览:700 |
1012题解浏览:861 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:1067 |
妹子杀手的故事 (C语言代码)浏览:1045 |
输入输出格式练习 (C语言代码)浏览:842 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:455 |
小O的图案 (C语言代码)浏览:912 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:594 |