pat 乙级 1047 编程团体赛(C++)
題目
編程團(tuán)體賽的規(guī)則為:每個(gè)參賽隊(duì)由若干隊(duì)員組成;所有隊(duì)員獨(dú)立比賽;參賽隊(duì)的成績(jī)?yōu)樗嘘?duì)員的成績(jī)和;成績(jī)最高的隊(duì)獲勝。現(xiàn)給定所有隊(duì)員的比賽成績(jī),請(qǐng)你編寫程序找出冠軍隊(duì)。
輸入格式:
輸入第一行給出一個(gè)正整數(shù) N(≤10?4),即所有參賽隊(duì)員總數(shù)。隨后 N 行,每行給出一位隊(duì)員的成績(jī),格式為:隊(duì)伍編號(hào)-隊(duì)員編號(hào)
成績(jī),其中隊(duì)伍編號(hào)為 1 到 1000 的正整數(shù),隊(duì)員編號(hào)為 1 到 10 的正整數(shù),成績(jī)?yōu)?0 到 100 的整數(shù)。
輸出格式:
在一行中輸出冠軍隊(duì)的編號(hào)和總成績(jī),其間以一個(gè)空格分隔。注意:題目保證冠軍隊(duì)是唯一的。
輸入樣例:
6
3-10 99
11-5 87
102-1 0
102-3 100
11-9 89
3-2 61
輸出樣例:
11 176
分析
- 根據(jù)題給數(shù)據(jù)范圍,本題數(shù)據(jù)類型選擇int
- 根據(jù)輸入格式要求,選擇C語(yǔ)言作為輸入比較方便(整個(gè)程序仍然使用C++編寫)
- 每個(gè)隊(duì)員的信息可以使用struct或class保存,包括隊(duì)伍編號(hào)、隊(duì)員編號(hào)、成績(jī)和總成績(jī)。
- 根據(jù)隊(duì)伍編號(hào)可以把整個(gè)輸入序列分為k隊(duì),同一隊(duì)成員的分?jǐn)?shù)累加到最后一個(gè)同隊(duì)成員里即可。
AC代碼
#include<iostream> #include<cstdio> using namespace std; struct Node {int num_team;int num_member;int grade;int total; }; int main() {int i,j,n;cin>>n;Node node[n];for(i=0;i<n;i++){scanf("%d-%d %d",&node[i].num_team,&node[i].num_member,&node[i].grade);node[i].total=node[i].grade;}for(i=0;i<n;i++)for(j=0;i!=j&&j<n;j++)//i!=j既能保證不重復(fù)加自身,也能簡(jiǎn)化計(jì)算(把總分累加到同隊(duì)的最后個(gè)隊(duì)員上){if(node[i].num_team==node[j].num_team){node[i].total=node[i].total+node[j].grade;}}int max_num=0;//假設(shè)第一個(gè)隊(duì)的總分最高for(i=1;i<n;i++){if(node[i].total>node[max_num].total)max_num=i;//獲得總分最高的隊(duì)伍編號(hào)}cout<<node[max_num].num_team<<" "<<node[max_num].total;return 0;}有任何問題,歡迎在評(píng)論區(qū)留言,博主每天都會(huì)看的喲!
更多題解
pat 乙級(jí) 題解匯總(持續(xù)更新)(C++)
總結(jié)
以上是生活随笔為你收集整理的pat 乙级 1047 编程团体赛(C++)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 韩剧tv如何清理缓存
- 下一篇: 中行原油宝是理财产品吗