PAT乙级刷题/1032 挖掘机技术哪家强/C++实现

一、题目描述

为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。

输入格式:

输入在第 1 行给出不超过 105 的正整数 N,即参赛人数。随后 N 行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从 1 开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。

输出格式:

在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。

输入样例:

6
3 65
2 80
1 100
2 70
3 40
3 0

输出样例:

2 150

二、思路分析

这题不难,唯一要注意的是当测试点2

当测试数据如下所示时,我们要注意是否能正确输出

1
1 0

三、题解代码以及提交截图

#include <iostream>
#define M 100000
using namespace std;

int main()
{
    int N,total_score[M] = {0};
    int ID,score;
    int max = total_score[1],temp = 1;
    cin >> N;
    for(int i = 0;i < N;i++){
        cin >> ID >> score;
        total_score[ID] = total_score[ID] + score;
    }
    int length = sizeof(total_score) / sizeof (total_score[0]);
    for(int i = 1;i < length;i++){
        if(total_score[i] > max){
            max = total_score[i];
            temp = i;
        }
    }
    cout << temp << " " << max;
}


 

 ---------------------------------------------------------分割线--------------------------------------------------------------

未通过测试点2的代码,可见关键点在temp = 1;

#include <iostream>
#define M 100000
using namespace std;

int main()
{
    int N,total_score[M] = {0};
    int ID,score;
    int max = total_score[1],temp = 0;
    cin >> N;
    for(int i = 0;i < N;i++){
        cin >> ID >> score;
        total_score[ID] = total_score[ID] + score;
    }
    int length = sizeof(total_score) / sizeof (total_score[0]);
    for(int i = 1;i < length;i++){
        if(total_score[i] > max){
            max = total_score[i];
            temp = i;
        }
    }
    cout << temp << " " << max;
}


猜你喜欢

转载自blog.csdn.net/m0_50829573/article/details/121750180
今日推荐