題目連接:php
http://acm.hdu.edu.cn/showproblem.php?pid=1862函數
題目類型:測試
模擬-結構體排序spa
題意歸納:code
給出N我的的學號,名字,成績,經過不一樣的順序進行不一樣的排序:blog
第一種排序:按學號遞增排序排序
第二種排序:按姓名的非遞減字典序排序ip
第三種排序:按成績的非遞減排序。當若干學生具備相同姓名或者相同成績時,則按他們的學號遞增排序。字符串
解題思路:string
經過結構體將全部人的信息儲存起來,而後經過不一樣的排序方法,寫出不一樣的cmp函數,而後在sort一波輸出便可。
題目:
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 19453 Accepted Submission(s): 7176
# include <stdio.h> # include <string.h> # include <algorithm> using namespace std; struct student{ int id; char name[20]; int score; }s[100010]; int cmp1(student a,student b) { if(a.id<b.id) return 1; return 0; } int cmp2(student a,student b) { if(strcmp(a.name,b.name)<0) return 1; else if(strcmp(a.name,b.name)==0 && a.id<b.id) return 1; return 0; } int cmp3(student a,student b) { if(a.score<b.score) return 1; else if(a.score==b.score && a.id<b.id) return 1; return 0; } int main () { int n,c,i,num=0; while(scanf("%d%d",&n,&c),n) { num++; for(i=0;i<n;i++) scanf("%d %s %d",&s[i].id,s[i].name,&s[i].score); if(c==1) sort(s,s+n,cmp1); else if(c==2) sort(s,s+n,cmp2); else if(c==3) sort(s,s+n,cmp3); printf("Case %d:\n",num); for(i=0;i<n;i++) printf("%06d %s %d\n",s[i].id,s[i].name,s[i].score); } return 0; }