HDU-1225-Football Score
HDU-1225-Football Score
http://acm.hdu.edu.cn/showproblem.php?pid=1225
终于放假了,在家就是舒服,网速也变成4M的了,好爽哇
这题就是字符串的模拟,注意细节就好
#include<stdio.h> #include<string.h> #include<stdlib.h> int n,t; struct cam { char str[50]; //队名 int score1; //得分 int score2; //净胜球 int score3; //进球 }list[50000]; int find(char ss[]) //查找字符串并返回下标 { int i; if(t==-1) { strcpy(list[0].str,ss); t=0; return t; } for(i=0;i<=t;i++) if(strcmp(list[i].str,ss)==0) return i; t++; strcpy(list[t].str,ss); return t; } int cmp(const void *a,const void *b) //从大到小排序 { if((*(struct cam *)a).score1!=(*(struct cam *)b).score1) return (*(struct cam *)b).score1-(*(struct cam *)a).score1; if((*(struct cam *)a).score2!=(*(struct cam *)b).score2) return (*(struct cam *)b).score2-(*(struct cam *)a).score2; if((*(struct cam *)a).score3!=(*(struct cam *)b).score3) return (*(struct cam *)b).score3-(*(struct cam *)a).score3; return strcmp((*(struct cam *)a).str,(*(struct cam *)b).str); } int main() { int i,k; char s1[50],s2[50],temp[10]; int a,b; int p,q; while(scanf("%d",&n)!=EOF) { k=n*(n-1); t=-1; memset(list,0,sizeof(list)); while(k--) { scanf("%s%s%s %d:%d",s1,temp,s2,&a,&b); p=find(s1); q=find(s2); if(a>b) //得分 list[p].score1+=3; else if(a==b) { list[p].score1+=1; list[q].score1+=1; } else list[q].score1+=3; list[p].score2+=(a-b); //净胜球 list[q].score2+=(b-a); list[p].score3+=a; //进球 list[q].score3+=b; } qsort(list,n,sizeof(struct cam),cmp); for(i=0;i<n;i++) printf("%s %d\n",list[i].str,list[i].score1); printf("\n"); } return 0; }
posted on 2012-06-28 20:05 java课程设计例子 阅读(147) 评论(0) 编辑 收藏 举报