ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PTAt140竞赛排名:(结构体)

2021-10-29 19:03:28  阅读:224  来源: 互联网

标签:cnt 竞赛 score int ++ curpos1 players PTAt140 排名


 

pta t140

竞赛排名:(结构体)

思路:构造一个name&&score的struct

难点:自定义的find和加分的方法和输出方式

int find(player a[],string s,int pos){
    int k;
    for(k=0;k<pos;k++){
        if(a[k].name==s)break;
    }
    if(k==pos)return -1;                     //找不到就输出-1
    else return k;                                //找得到旧结构体的下标并输出
}
void run(){**
    int n;cin>>n;
    cnt=0;
    for(int i=0;i<n*(n-1)/2;i++){
        string s1,s2;
        int d;
        cin>>s1>>s2>>d;
        int p1=find(players,s1,cnt);    //输出下标

​        int p2=find(players,s2,cnt);
​        int curpos1=p1,curpos2=p2;
​        if(p1==-1){                                    //新的name时            

​            players[cnt].name=s1;            //读入新的struct
​            players[cnt].score=0;
​            cnt++;                                        //struct数++
​            curpos1=cnt-1;                        //curpos1为其下标(cnt++减1)
​        }
​        if(p2==-1){
​            players[cnt].name=s2;
​            players[cnt].score=0;
​            cnt++;
​            curpos2=cnt-1;
​        }
​        if(d==0){                                    //平局时都加1分
​            players[curpos1].score++;
​            players[curpos2].score++;
​        }
​        else{
​            players[curpos1].score+=3;    
​        }
​    }
​    mysort(players,n);
​    cout<<'1'<<' '<<players[0].name;    //先输出第一名
​    for(int j=1;j<n;j++){
​    if(players[j].score==players[j-1].score){          //若分数相等,同行输出
​        cout<<' '<<players[j].name;
​    }
​    else{
​        cout<<endl;
​        cout<<j+1<<' '<<players[j].name;        //第一名是players[0],而j是从1开始遍历所以j+1才为名次
​    }
​    }
​    cout<<endl;
}

 

标签:cnt,竞赛,score,int,++,curpos1,players,PTAt140,排名
来源: https://www.cnblogs.com/Candyk8d9/p/15481864.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有