解题思路:
是我C++拿不动刀了还是你java飘了...,java都能过,C++超时......
注意事项:
算法上用stl模板的sort,大数情形下会自动使用快速排序,应该已经是最优的了。结果提交超时,把cout改成printf才过,600多ms,看来cout确实是慢,尤其是对于这种长字符串,慎用cout
参考代码:
#include <iostream> #include <vector> #include <string> #include <algorithm> #include <stdio.h> using namespace std; typedef struct Id { string idNo; string date; }; vector<Id> idArr; bool cmp(Id a, Id b) { if (a.date > b.date) return true; else if (a.date == b.date) { if (a.idNo > b.idNo) return true; } return false; } int main(int argc, char** argv) { int n = 0; cin >> n; for (int i = 0; i < n; i++) { string temp; cin >> temp; string date = temp.substr(6, 8); Id id; id.idNo = temp; id.date = date; idArr.push_back(id); } sort(idArr.begin(), idArr.end(), cmp); //如果用cout就会超时 //for (vector<Id>::iterator it = idArr.begin(); it < idArr.end(); it++) // cout << it->idNo << endl; for (int i = 0; i < idArr.size(); i++) { printf("%s\n", idArr.at(i).idNo.c_str()); } return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:783 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:588 |
【绝对值排序】 (C语言代码)浏览:892 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:609 |
蚂蚁感冒 (C语言代码)浏览:816 |
数组与指针的问题浏览:760 |
整除问题 (C语言代码)浏览:594 |
C语言程序设计教程(第三版)课后习题10.7 (用指针求解)浏览:1542 |
printf基础练习 (C语言代码)浏览:2268 |