解题思路:
自定义二级排序,优先比出生年月。
参考代码 ① :
#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分
9 人评分
本人酷爱递归实现很多问题,这里也是浏览:634 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:636 |
WU-格式化数据输出 (C++代码)浏览:1313 |
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:637 |
核桃的数量 (C语言代码)浏览:726 |
字符逆序 (C语言代码)浏览:506 |
1025题解浏览:796 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1496 |
C二级辅导-公约公倍 (C语言代码)浏览:537 |
DNA (C语言代码)浏览:837 |