0
点赞
收藏
分享

微信扫一扫

【手把手带你刷好题】——24.挖掘机技术哪家强(简单模拟、非力扣)


【前言】


今天是刷题打卡第24天!

加油啦。


【手把手带你刷好题】——24.挖掘机技术哪家强(简单模拟、非力扣)_#define 

原题:挖掘机技术哪家强(简单模拟)

题目描述:


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


输入格式:


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


输出格式:


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


输入样例:


6

3 65

2 80

1 100

2 70

3 40

3 0


输出样例:


2 150


思路:


  • 令数组school[MAXN]记录每个学校的总分,初值为0,对每一个读入的学校schID与其对应的分数score,令school[schID] += score;
  • 令变量k 纪录最高总分的学校编号,变量max纪录最高总分,初值为-1,由于学校是连续编号的,因此枚举编号1~N,不断更新k 和max 即可。


代码执行:

#include<stdio.h>

#define MAXN 100000
int school[MAXN] = { 0 };//记录每个学校的总分

int main()
{
int n = 0;
int schID = 0;//学校编号
int score = 0;//分数
scanf("%d", &n);//参赛人数
for (int i = 0; i < n; i++)//读入每一位参赛人员信息
{
scanf("%d %d", &schID, &score);
school[schID] += score;//学校schID的总分增加score
}
int k = 0;//用于记录最高总分的学校编号
int max = -1;//用于记录最高总分
for (int i = 1; i <= n; i++)//由于学校是从1开始连续编号的,所以范围是1~N,其中包括N
{
if (school[i] > max)
{
max = school[i];
k = i;
}
}
printf("%d %d\n", k, max);
return 0;
}


【敲黑板】:之所以将 int school[MAXN] = { 0 }; 设置成全局变量,是为了防止数据太大导致栈溢出。


总结


今天是刷题打卡第24天!

时间紧,任务重,不过,冲冲冲!


【手把手带你刷好题】——24.挖掘机技术哪家强(简单模拟、非力扣)_初值_02



举报

相关推荐

0 条评论