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

举报
安然无虞 发表于 2022/05/27 00:13:58 2022/05/27
【摘要】 【前言】 今天是刷题打卡第24天! 加油啦。   原题:挖掘机技术哪家强(简单模拟) 题目描述: 为了用事实说明挖掘机技术到底哪家强,组织了一场挖掘机技能大赛。请根据比赛结果统计出技能最强的哪个学校。 输入格式: 在第一行给出不超过10^5 的正整数N ,即参赛人数。随后N 行,每行...

【前言】

今天是刷题打卡第24天!

加油啦。

 

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

题目描述:

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

输入格式:

第一行给出不超过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 即可。

代码执行:


  
  1. #include<stdio.h>
  2. #define MAXN 100000
  3. int school[MAXN] = { 0 };//记录每个学校的总分
  4. int main()
  5. {
  6. int n = 0;
  7. int schID = 0;//学校编号
  8. int score = 0;//分数
  9. scanf("%d", &n);//参赛人数
  10. for (int i = 0; i < n; i++)//读入每一位参赛人员信息
  11. {
  12. scanf("%d %d", &schID, &score);
  13. school[schID] += score;//学校schID的总分增加score
  14. }
  15. int k = 0;//用于记录最高总分的学校编号
  16. int max = -1;//用于记录最高总分
  17. for (int i = 1; i <= n; i++)//由于学校是从1开始连续编号的,所以范围是1~N,其中包括N
  18. {
  19. if (school[i] > max)
  20. {
  21. max = school[i];
  22. k = i;
  23. }
  24. }
  25. printf("%d %d\n", k, max);
  26. return 0;
  27. }

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

总结

今天是刷题打卡第24天!

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

 

文章来源: bit-runout.blog.csdn.net,作者:安然无虞,版权归原作者所有,如需转载,请联系作者。

原文链接:bit-runout.blog.csdn.net/article/details/121459235

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。