PAT B1032 挖掘机技术哪家强 (20 分)

在这里插入图片描述
分析:
1.定义最大可能的数组(根据题目给出的数据范围)
2.下标代表学校编号,对应数组的位置存储该学校所得的分数

以下是在平台运行通过的代码:

#include <stdio.h>
#include <algorithm>
using namespace std;
int count_number;
int school_number;
int school_grade[1000001] = { 0 };//全部初始化为0
int main()
{
    scanf("%d",&count_number);
    int i = 0;
    int grade;
    while(count_number)
    {
        scanf("%d",&school_number);
        scanf("%d",&grade);
        school_grade[school_number]+=grade;
        i++;
        count_number--;
    }
    int sort_school_grade[i+1];
    for(int j=0;j<=i;j++)
    {
        sort_school_grade[j]=school_grade[j];
    }
     sort(sort_school_grade,sort_school_grade + i+1);
     for(int j=0;j<=i;j++)
     {
         if(school_grade[j]==sort_school_grade[i])
         {
             printf("%d %d",j,sort_school_grade[i]);
         }
     }
    return 0;
}

此题需要注意:
1.读题仔细,我最开始读题不仔细,简单理解最后输出单人最高成绩了,最后代码写完了才发现题是让输出得分最高的学校编号,所以输入和输出样例需要仔细看,以防浪费时间。
2.题目给的范围需要仔细,题目中为不超过10^5,而我起始数组的起始下标0其实没有用,所以数组大小应该100001,不是100000,每个人的定义不一样,这里只是想说我的问题。

发布了11 篇原创文章 · 获赞 0 · 访问量 256

猜你喜欢

转载自blog.csdn.net/weixin_40852277/article/details/101074769