题目大意就是给出N个球队之间的比分,按照积分,净胜球数,进球数,字母顺序进行排序。
原本想用自定义数据结构,然而没带书,硬着头皮写了一个结果还阔以。
wa了两次,一次排序字符串比较的地方写错了STRCPYs1>s2时原来是正数啊啊啊啊啊w(゚Д゚)w
第二次发现两个输出之间要多打一行一行......妈欸
#include<stdio.h>
#include<string.h>
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
int i,j,t,g1,g2,flag=1,k=0,a[4][300]={0},q;
char s1[30]="",s2[30]="",s[300][30];
for (i=1;i<=n*(n-1);i++)
{
scanf("%s VS %s %d:%d",s1,s2,&g1,&g2);
for (j=1;j<=k;j++)
if (strcmp(s[j],s1)==0)
{
if (g1>g2) a[0][j]+=3;
if (g1==g2) a[0][j]+=1;
a[1][j]+=g1;a[2][j]+=g2;
flag=0;break;
}
if (flag)
{ k++;strcpy(s[k],s1);
if (g1>g2) a[0][k]+=3;
if (g1==g2) a[0][k]+=1;
a[1][k]+=g1;a[2][k]+=g2;
}
flag=1;
for (j=1;j<=k;j++)
if (strcmp(s[j],s2)==0)
{
if (g1<g2) a[0][j]+=3;
if (g1==g2) a[0][j]+=1;
a[1][j]+=g2;a[2][j]+=g1;
flag=0;break;
}
if (flag)
{ k++;strcpy(s[k],s2);
if (g1<g2) a[0][k]+=3;
if (g1==g2) a[0][k]+=1;
a[1][k]+=g2;a[2][k]+=g1;
}
}
for (i=1;i<=k;i++) a[3][i]=i;
for (i=1;i<=k-1;i++)
for (j=i+1;j<=k;j++)
{
if ((a[0][i]<a[0][j]) || (a[0][i]==a[0][j]&&((a[1][j]-a[2][j])>(a[1][i]-a[2][i])))
|| ((a[0][i]==a[0][j]) && ((a[1][j]-a[2][j])==(a[1][i]-a[2][i])) && (a[1][j]>a[2][j])) ||
((a[0][i]==a[0][j]) && ((a[1][j]-a[2][j])==(a[1][i]-a[2][i])) && (a[1][j]==a[2][j])&& (strcmp(s[a[3][j]],s[a[3][i]])<0) ))
{ q=a[0][i];a[0][i]=a[0][j];a[0][j]=q;
q=a[1][i];a[1][i]=a[1][j];a[1][j]=q;
q=a[2][i];a[2][i]=a[2][j];a[2][j]=q;
q=a[3][i];a[3][i]=a[3][j];a[3][j]=q;}
}
for (i=1;i<=k;i++) printf("%s %d\n",s[a[3][i]],a[0][i]);
printf("\n");//就是这个玩意..害我调试半天
}
}