首页 > 其他分享 >洛谷 P5738 【深基7.例4】歌唱比赛 C语言 题解

洛谷 P5738 【深基7.例4】歌唱比赛 C语言 题解

时间:2024-10-26 23:21:28浏览次数:3  
标签:smax 洛谷 min int 题解 深基 ++ av max

题目描述

n(n≤100)n(n≤100) 名同学参加歌唱比赛,并接受 m(m≤20)m(m≤20) 名评委的评分,评分范围是 00 到 1010 分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下 m−2m−2 个评分的平均数。请问得分最高的同学分数是多少?评分保留 22 位小数。

输入格式

第一行两个整数 n,mn,m。
接下来 nn 行,每行各 mm 个整数,表示得分。

输出格式

输出分数最高的同学的分数,保留两位小数。

输入输出样例

输入 #1

7 6
4 7 2 6 10 7
0 5 0 10 3 10
2 6 8 4 3 6
6 3 6 7 5 8
5 9 3 3 8 1
5 9 9 3 2 0
5 8 0 4 1 10

输出 #1

6.00

解题思路

这道题思路也比较好想,困难的应该就是要输入n*m个数字,还要去掉每行最大最小的数,还要求平均,还要判断最终每行的平均值,会比较难想。这里可以采用两个循环嵌套分别控制行和列,在内层再进行判断最大最小值,用数组记录每一行的总和,再在外层循环去掉最大最小值。剩下的比较大小就很常规了。

for (int i = 0; i < n; i++)
{
    int max = -1, min = 11;//分别赋小值和大值
    for (int j = 0; j < m; j++)
    {
        scanf("%d", &a);
        if (a > max)
            max = a;
        if (a < min)
            min = a;
        b[i] = b[i] + a;//b[i]表示每个学生的总分
    }
    b[i] = b[i] - max - min;
}

一些细节

1.用max,min记录最大最小值的时候,要现在第一层循环内初始化一个小的值和大的值,这样每一行会重新判断。

for (int i = 0; i < n; i++)
{
    int max = -1, min = 11;//分别赋小值和大值
    for (int j = 0; j < m; j++)

2.求平均分时要记得(m-2),去掉最大最小值。b[i]前加(float)更改数据类型,不然就是取商了。

for (int i = 0; i < n; i++)
{
    av = (float)b[i] / (m - 2);//求平均分
    if (av > smax)
        smax = av;
}

代码如下

#include <stdio.h>
int main()
{
	int n, m,  a;
	scanf("%d %d", &n, &m);
	int b[100] = { 0 };//记录每个学生成绩
	float av,smax=0;
	for (int i = 0; i < n; i++)
	{
		int max = -1, min = 11;//分别赋小值和大值
		for (int j = 0; j < m; j++)
		{
			scanf("%d", &a);
			if (a > max)
				max = a;
			if (a < min)
				min = a;
			b[i] = b[i] + a;//b[i]表示每个学生的总分
		}
		b[i] = b[i] - max - min;
	}
	for (int i = 0; i < n; i++)
	{
		av = (float)b[i] / (m - 2);//求平均分
		if (av > smax)
			smax = av;
	}

	printf("%.2f",smax);
	return 0;
}	

碎碎念

我发现用c写题解的好少啊,c++之类的特别多,这种题找个c的对一下代码都找不到合适的QAQ。所用出了这个,希望对你有帮助,求点赞关注喵~

标签:smax,洛谷,min,int,题解,深基,++,av,max
From: https://blog.csdn.net/2403_88098719/article/details/143261135

相关文章

  • CSP-J 2024第二轮试题解析
    2024年10月26日,CSP-J/S2024第二轮认证圆满结束;这次入门组的比赛重点考察了模拟和动态规划算法,还涉及到字符串、贪心、前缀和等内容的考察,相比去年来说,对思维能力的考察更多。前两题比去年好做,第三题的部分分也比较好拿,但是第四题的难度明显比去年高,预计分数线会出现小幅提升。......
  • 如何利用递归和迭代构建二叉树?详解题解
    文章目录根据二叉树创建字符串思路代码二叉树的层序遍历思路代码二叉树的最近公共祖先思路代码二叉搜索树与双向链表思路代码从前序与中序遍历序列构造二叉树思路代码总结根据二叉树创建字符串题目:样例:可以看见,唯一特殊的就是左子树,当右子树存在的时候左......
  • 2024CSP-J题解附源码T1-T3
    T1#include<bits/stdc++.h>usingnamespacestd;///T1题解///输入行数n///输入n行,每行一个字符串,字符串只有两个字母组成,第一个字母是花色,第二个字母是点数。///一副牌只有52种组合,因为map能去重,所以用map进行统计不同组合数即mp.size()///结果为52-mp.size()map<string......
  • CF771A. Bear and Friendship Condition 题解 并查集
    题目链接:https://codeforces.com/problemset/problem/771/A视频讲解:https://www.bilibili.com/video/BV1tZ1FYPELp/?p=6题目大意:判断一个无向图中的每个连通块是否都是一个完全图。首先我们可以用并查集维护每个连通块的大小。其次,我们可以开一个\(cnt_i\)表示以节点\(i\)......
  • Codeforces Round 981 (Div. 3) 10.24 (ABCDE)题解
    CodeforcesRound981(Div.3)2024.10.24题解A.SakurakoandKosuke题意:\(Sakurako\)与\(Kosuke\)正在玩游戏,一个点在原点\(x=0\)的起始位置。对于第\(i\)次操作,点会移动\(2\asti-1\)步。两人轮流操作,Sakurako先手,每次将点往负方向移动;Kosuke每次将点往正方向移动......
  • 题解:CF599B Spongebob and Joke
    完整题意详见题面。已知$b_i=f_{a_i}$,求数组$a$的值。先记录每个$f_i$的值的数量,当$f$数组中与$b$数组中没有相同的值时,输出Impossible当$f$数组中与$b$数组中有多组相同的值时,输出Ambiguity其余情况输出Possible。然后考虑如何求出数组$a$,对于$......
  • UVA11294 Wedding 题解
    洛谷题目传送门前排提示:本题需要用到知识点2-SAT以及强联通分量,模板传送门P4782【模板】2-SAT。题目大意:有至多303030对夫妻将会参加一个婚宴。他们将会坐在一个......
  • ctfshow web入门命令执行——web29-40题解
    web291.传入c参数来进行代码执行,payload: c=system("catfla*.php");  如图2.浏览器默认不显示php的标签所以需要右键查看源代码web30题目过滤了命令执行函数system,还可以用passthur(),过滤的字符可以用?代替单个字符。payload:?c=passthur("catfla?.p?p");查看源......
  • Anaconda + Vscode 和 Anaconda + Pycharm安装操作教程以及问题解决
    1.anaconda安装2.打不开AnacondaNavigation解决办法3.如何创建虚拟环境(2种方法)4.Anaconda+vscode5.Anaconda+pycharmAnaconda+Vscode和Anaconda+Pycharm安装操作教程以及问题解决1.anaconda安装Anaconda下载地址我选的是2020,11的一个版本。还没装之前电脑是有p......
  • Codeforces Round 981 (Div. 3)A-D题解
    CodeforcesRound981(Div.3)A.SakurakoandKosukeSakurakoandKosukedecidedtoplaysomegameswithadotonacoordinateline.Thedotiscurrentlylocatedinposition\(x=0\).Theywillbetakingturns,andSakurakowillbetheonetostart.Ont......