• HDU1225 字符串


    水题~~

    字符串的处理+排序

    View Code
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 using namespace std;
     5 const int maxn = 5005;
     6 struct node{
     7     char name[ 105 ];
     8     int win,lost,diff,score;
     9 }team[ maxn ];
    10 int cnt;
    11 void init( int n ){
    12     for( int i=0;i<=n;i++ ){
    13         team[ i ].win=team[ i ].lost=team[ i ].diff=team[ i ].score=0;
    14         //memset( team[i].name,'\0',sizeof( team[i].name ));
    15     }
    16     cnt=0;
    17 }
    18 int find( char tt[] ){
    19     if( cnt==0 ){
    20         strcpy( team[0].name,tt );
    21         cnt++;
    22         return 0;
    23     }
    24     int i;
    25     for( i=0;i<cnt;i++ ){
    26         if( strcmp( tt,team[i].name )==0 ){
    27             return i;
    28         }
    29     }
    30     if( i==cnt ){
    31         strcpy( team[cnt].name,tt );
    32         cnt++;
    33         return cnt-1;
    34     }
    35 }
    36 bool cmp( node a,node b ){
    37     if( a.score!=b.score )
    38         return a.score>b.score;
    39     else if( a.diff!=b.diff )
    40         return a.diff>b.diff;
    41     else if( a.win!=b.win )
    42         return a.win>b.win;
    43     else if( strcmp( a.name,b.name )>0 )
    44         return false;
    45     else return true;
    46 }
    47 int main(){
    48     int n;
    49     while( scanf("%d",&n)!=EOF ){
    50         init( n );
    51         char n1[ 105 ],n2[ 105 ];
    52         int num1,num2;
    53         for( int i=0;i<(n*(n-1));i++ ){
    54             scanf("%s VS %s %d:%d",n1,n2,&num1,&num2);
    55             int f1=find( n1 );
    56             int f2=find( n2 );
    57             if( num1==num2 ){
    58                 team[ f1 ].score++;
    59                 team[ f2 ].score++;
    60                 team[ f1 ].win+=num1;
    61                 team[ f1 ].lost+=num1;
    62                 team[ f2 ].win+=num2;
    63                 team[ f2 ].lost+=num2;
    64             }
    65             else if( num1>num2 ){
    66                 team[ f1 ].win+=num1;
    67                 team[ f1 ].lost+=num2;
    68                 team[ f2 ].win+=num2;
    69                 team[ f2 ].lost+=num1;
    70                 team[ f1 ].score+=3;
    71             }
    72             else if( num1<num2 ){
    73                 team[ f1 ].win+=num1;
    74                 team[ f1 ].lost+=num2;
    75                 team[ f2 ].win+=num2;
    76                 team[ f2 ].lost+=num1;
    77                 team[ f2 ].score+=3;
    78             }
    79         }
    80         for( int i=0;i<n;i++ ){
    81             team[ i ].diff=team[ i ].win-team[ i ].lost;
    82         }
    83         sort( team,team+n,cmp );
    84         for( int i=0;i<n;i++ ){
    85             printf("%s %d\n",team[i].name,team[i].score);
    86         }
    87         printf("\n");
    88     }
    89     return 0;
    90 }
    keep moving...
  • 相关阅读:
    初步学习next.js-1-新建项目
    对象比较-深层,浅层
    制作右键菜单
    使用高德API-初级应用
    启动前后端连载方法
    使用websocket
    关于图片压缩
    归并排序(mergesort)
    冒泡排序
    递归介绍
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2935684.html
Copyright © 2020-2023  润新知