PAT乙級 1047 編程團體賽 (20分)

一,問題描述

二,問題分析

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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章