uva 10194Football (aka Soccer)
来源:互联网 发布:淘宝店铺全套装修 编辑:程序博客网 时间:2024/05/16 08:56
统计比赛数据,然后排序,排序最后一个规则是按字典顺序,但是不考虑字母大小写,用strcasecmp函数。
第一遍按步写了代码,果断wa,第二遍重写了,快速排序,AC了。代码如下:
#include <stdio.h>#include <stdlib.h>#include <iostream>#include <cstring>using namespace std;struct team{ char name[35]; int point,played,wins,ties,losses,difference,score,against;} t[35];int N,T,G;int findteam(char s[]){ for(int i=0; i<T; i++) if(!strcmp(s,t[i].name)) return i;}void tj(char s[]){ int len=strlen(s); int score1=0,score2=0; char t1[50],t2[50]; int i,j; for(i=0,j=0; s[i]!='#'; i++,j++) t1[j]=s[i]; t1[j]='\0'; for(i++; s[i]!='@'; i++) score1=score1*10+(s[i]-'0'); for(i++; s[i]!='#'; i++) score2=score2*10+(s[i]-'0'); for(j=0,i++; i<len; i++,j++) t2[j]=s[i]; t2[j]='\0'; int _t1,_t2; _t1=findteam(t1); _t2=findteam(t2); t[_t1].score+=score1; t[_t2].score+=score2; t[_t1].against+=score2; t[_t2].against+=score1; if(score1>score2) { t[_t1].wins++; t[_t2].losses++; t[_t1].point+=3; } else if(score1<score2) { t[_t1].losses++; t[_t2].wins++; t[_t2].point+=3; } else { t[_t1].ties++; t[_t2].ties++; t[_t1].point++; t[_t2].point++; }}void swapt(team &t1,team &t2){ char flag[35]; strcpy(flag,t1.name); strcpy(t1.name,t2.name); strcpy(t2.name,flag); int temp=t1.wins; t1.wins=t2.wins; t2.wins=temp; temp=t1.played; t1.played=t2.played; t2.played=temp; temp=t1.ties; t1.ties=t2.ties; t2.ties=temp; temp=t1.losses; t1.losses=t2.losses; t2.losses=temp; temp=t1.point; t1.point=t2.point; t2.point=temp; temp=t1.score; t1.score=t2.score; t2.score=temp; temp=t1.against; t1.against=t2.against; t2.against=temp; temp=t1.difference; t1.difference=t2.difference; t2.difference=temp;}int cmp(const void *tt1,const void *tt2){ struct team *t1=(struct team*)tt1; struct team *t2=(struct team*)tt2; if(t1->point!=t2->point) return t2->point-t1->point; if(t1->wins!=t2->wins) return t2->wins-t1->wins; if(t1->difference!=t2->difference) return t2->difference-t1->difference; if(t1->score!=t2->score) return t2->score-t1->score; if(t1->played!=t2->played) return t1->played-t2->played; return strcasecmp(t1->name,t2->name);}int main(){ cin>>N; getchar(); while(N--) { char tournament[110]; gets(tournament); cin>>T; getchar(); for(int i=0; i<T; i++) { gets(t[i].name); t[i].wins=0; t[i].losses=0; t[i].ties=0; t[i].point=0; t[i].played=0; t[i].against=0; t[i].score=0; } cin>>G; getchar(); char s[1020]; for(int i=0; i<G; i++) { gets(s); tj(s); } for(int i=0; i<T; i++) { t[i].played=t[i].wins+t[i].ties+t[i].losses; t[i].difference=t[i].score-t[i].against; } qsort(t,T,sizeof(t[0]),cmp); cout<<tournament<<endl; for(int j=0; j<T; j++) { cout<<j+1<<") "<<t[j].name <<" "<<t[j].point<<"p, " <<t[j].played<<"g " <<"("<<t[j].wins<<"-"<<t[j].ties<<"-"<<t[j].losses<<"), " <<t[j].difference<<"gd (" <<t[j].score<<"-"<<t[j].against<<")"<<endl; } if(N) cout<<endl; } return 0;}
- uva 10194 Football (aka Soccer)
- UVa 10194 - Football (aka Soccer)
- uva 10194 - Football (aka Soccer)
- UVA 10194 - Football (aka Soccer)
- uva 10194Football (aka Soccer)
- UVa 10194 - Football (aka Soccer)
- UVA 10194 Football (aka Soccer)
- uva 10194 - Football (aka Soccer)
- uva -- 10194 - Football (aka Soccer)
- UVA 10194 - Football (aka Soccer)
- UVa 10194 - Football (aka Soccer)
- UVA 10194 Football (aka Soccer)
- UVa:10194 - Football (aka Soccer)
- UVa 10194 - Football (aka Soccer)
- UVA - 10194 Football (aka Soccer)
- uva 10194 Football (aka Soccer)
- UVA 10194 Football (aka Soccer)
- UVA Football (aka Soccer)
- 数据库利用出生日期查询(年龄)的sql语句
- 数据库,角色,用户,安全
- ASMCMD中的各个命令
- java实现算法设计之走楼梯
- 解决Android ListView中图片异步加载错位问题(2)
- uva 10194Football (aka Soccer)
- RAC 下文件建立在本地的问题解决
- 【MySQL】Linux + MySQL数据库服务器配置和管理(一)
- 做生命的合伙人
- java实现组成不重复的d位数
- C# 关键字readonly和const之区别
- C#中const和readonly的区别
- C++菜鸟常见错误整理(第三天)
- hduacm纪念