PAT乙级题库“傻瓜”题解之编程团体赛

编程团体赛的规则为:每个参赛队由若干队员组成;所有队员独立比赛;参赛队的成绩为所有队员的成绩和;成绩最高的队获胜。

现给定所有队员的比赛成绩,请你编写程序找出冠军队。

输入格式:

输入第一行给出一个正整数 N(104​​),即所有参赛队员总数。随后 N 行,每行给出一位队员的成绩,格式为:队伍编号-队员编号 成绩,其中队伍编号为 1 到 1000 的正整数,队员编号为 1 到 10 的正整数,成绩为 0 到 100 的整数。

输出格式:

在一行中输出冠军队的编号和总成绩,其间以一个空格分隔。注意:题目保证冠军队是唯一的。

输入样例:

6
3-10 99
11-5 87
102-1 0
102-3 100
11-9 89
3-2 61

输出样例:

11 176
 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<string>
 4 using namespace std;
 5 int main()
 6 {
 7     int n;
 8     cin>>n; 
 9     struct students{
10         string number;
11         int score;
12         int flag;
13     };
14     students sts[n];
15     for(int i=0;i<n;i++)
16     {
17         cin>>sts[i].number;
18         
19         int p=0;
20         string str;
21         while(sts[i].number[p]!='-')
22         {
23             str+=sts[i].number[p];
24             p++;
25         }
26         sts[i].number=str;
27         cin>>sts[i].score;
28     }
29 //    for(int i=0;i<n;i++)
30 //    cout<<sts[i].number<<" "<<sts[i].score<<endl; 
31     int max=0;
32     string strs;
33     for(int i=0;i<n;i++)
34     {
35         for(int j=i+1;j<n;j++)
36         if(sts[i].number==sts[j].number&&sts[j].flag==0)
37         {
38             sts[i].score+=sts[j].score;
39             sts[j].flag=1;
40         }
41         if(sts[i].score>max)
42         {
43             max=sts[i].score;
44             strs=sts[i].number;
45         }
46     }
47     cout<<strs<<" "<<max<<endl;
48     return 0;
49 }

这是用结构体的解法

原文地址:https://www.cnblogs.com/solititude/p/11836719.html