一,問題描述
二,問題分析
1.自定義結構體
struct member
{
int teamnumber; //隊伍編號
int number; //成員編號
int score; //得分
};2.用一個數組接收同一個隊伍下隊員的分數,並累加
3.遍歷數組,找出最大值,即分值最高,其對應下標爲隊伍編號
三,代碼解決
#include<iostream>
#include<vector>
using namespace std;
struct member
{
int teamnumber; //隊伍編號
int number; //成員編號
int score; //得分
};
int main() {
int number;
cin >> number; //輸入參賽人數
vector<member> mem(number);
for (int i = 0; i < number; i++) {
cin >> mem[i].teamnumber >> mem[i].number >> mem[i].score; //按照要求依次輸入
}
int maxindex = 0;
int maxscore = 0;
vector<int> allscore(1000); //用於統計團體總分的數組
for (int i = 0; i < mem.size(); i++) {
allscore[mem[i].teamnumber] += mem[i].score; //分數累加 allscore的下標爲隊伍編號
}
for (int i = 0; i < allscore.size(); i++) { //找出最高分及下標
if (allscore[i] > maxscore) {
maxscore = allscore[i];
maxindex = i;
}
}
cout << maxindex << " " << maxscore;
return 0;
}