PAT甲级1028 List Sorting:[C++题解]排序,cin和cout会超时
生活随笔
收集整理的這篇文章主要介紹了
PAT甲级1028 List Sorting:[C++题解]排序,cin和cout会超时
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目分析
- 題目鏈接
題目分析
用結構體來存,寫三個排序函數。
本題需要注意的點是:
用cin來讀會超時,所以用C語言的scanf來讀。這樣的話,就不能使用string,而是使用char數組。
另外輸出的時候把string轉化成 char *
c_str()函數返回一個指向以null結尾的字符數組的指針,該數組的數據等于存儲在字符串中的數據。
for(auto c:ranks){printf("%s %s %d\n",c.id.c_str(),c.name.c_str(),c.grade);}ac代碼
#include<bits/stdc++.h> using namespace std;const int N =1e5+10;struct Student{string id ,name;int grade; }; vector<Student> ranks;bool cmp1(Student a ,Student b){return a.id<b.id; }bool cmp2(Student a ,Student b){if(a.name!=b.name) return a.name<b.name;return a.id<b.id; }bool cmp3(Student a ,Student b){if(a.grade!=b.grade) return a.grade<b.grade;return a.id<b.id; }int main(){int n,c;scanf("%d%d",&n,&c);while(n--){char id[10],name[10];int grade;scanf("%s%s%d",id,name,&grade);ranks.push_back({id,name,grade});}if(c==1)sort(ranks.begin(),ranks.end(),cmp1);else if(c==2)sort(ranks.begin(),ranks.end(),cmp2);else sort(ranks.begin(),ranks.end(),cmp3);for(auto c:ranks){printf("%s %s %d\n",c.id.c_str(),c.name.c_str(),c.grade);}}題目鏈接
PAT甲級1028 List Sorting
總結
以上是生活随笔為你收集整理的PAT甲级1028 List Sorting:[C++题解]排序,cin和cout会超时的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级1025 PAT Rankin
- 下一篇: PAT甲级1039 Course Lis