首页 > 其他分享 >【洛谷】P5738 【深基7.例4】歌唱比赛(详细注解)

【洛谷】P5738 【深基7.例4】歌唱比赛(详细注解)

时间:2024-12-03 21:00:08浏览次数:7  
标签:元素 洛谷 平均值 ++ sum 深基 P5738 循环 数组

#include <iostream>
#include <iomanip>
#include <algorithm>
using namespace std;

int main()
{
    //定义两个整数变量n和m,用于接收用户输入的二维数组的行数和列数
    int n, m;
    cin >> n >> m;

    //定义二维整数数组A,用于存储用户输入的整数数据
    //这里根据题意直接将数组大小预定义为100行20列
    int A[100][20] = { 0 };

    //定义一维双精度数组B,用于存储每行数据去掉第一个和最后一个元素后的平均值
    double B[100] = { 0 };

    //定义循环控制变量i、j、t,以及用于交换元素时临时存储数据的变量temp
    int i, j, t, temp;

    //以下嵌套的for循环用于从标准输入读取用户输入的数据,并将其存储到二维数组A中
    //外层循环控制行数,内层循环控制列数,按照行数n和列数m,逐个读取整数元素并存入数组A相应位置
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
            cin >> A[i][j];
    }

    //以下是冒泡排序的逻辑,目的是对二维数组A的每一行元素进行从小到大的排序
    //外层循环控制对每一行都执行排序操作,总共执行n次,即对n行数据分别排序
    for (i = 0; i < n; i++)
    {
        //中间层循环控制每一行需要比较的轮数,每一轮都会把当前最大的元素“冒泡”到当前行的末尾
        //因为每比较一轮就能确定一个当前最大元素的最终位置,所以一共需要比较m - 1轮,就能排好序
        for (j = 0; j < m - 1; j++)
        {
            //最内层循环用于相邻元素的比较和交换
            //在每一轮比较中,从第一个元素开始,依次比较相邻的两个元素,如果前面的元素大于后面的元素,就交换它们的位置
            //通过这样不断地比较和交换,每一轮结束后,当前未排序部分的最大元素就会“浮”到末尾
            for (t = 0; t < m - 1 - j; t++)
            {
                if (A[i][t] > A[i][t + 1])
                {
                    //如果当前元素大于下一个元素,则进行交换
                    temp = A[i][t];
                    A[i][t] = A[i][t + 1];
                    A[i][t + 1] = temp;
                }
            }
        }
    }

    //定义变量sum,用于累加每行中间部分元素的和,以便后续计算平均值
    int sum;
    //以下循环用于计算二维数组A中每一行去掉第一个和最后一个元素后的平均值,并将结果存储到数组B中
    //外层循环控制行,即对每一行都进行一次平均值的计算操作
    for (i = 0; i < n; i++)
    {
        //对于每一行,在计算平均值之前,先将sum初始化为0,确保每次计算都是从新的一行开始累加
        sum = 0;
        //内层循环控制列,累加该行从第二个元素(索引为1)到倒数第二个元素(索引为m - 2)的值到sum中
        for (j = 1; j < m - 1; j++)
            sum = sum + A[i][j];
        //计算当前行的平均值,通过将sum乘以1.0进行类型转换,使得除法运算按照浮点数规则进行,得到精确的平均值结果
        //然后将平均值存储到数组B对应的位置,数组B的每个元素对应二维数组A中相应行的平均值
        B[i] = (sum * 1.0) / ((m - 2) * (1.0));
    }

    //使用标准库中的max_element函数找出数组B中的最大值
    //max_element函数接受两个迭代器参数,表示要查找的范围,这里传入B和B + n,表示查找数组B从开始到结束(包含n个元素)这个范围内的最大值
    //通过fixed和setprecision(2)来设置输出格式,使得输出的浮点数保留两位小数,最后将找到的最大值输出显示
    cout << fixed << setprecision(2) << *max_element(B, B + n);

    return 0;
}

 其中查找元素最大值max_element函数的头文件是#include <algorithm>

设置小数精度——setprecision的头文件是#include <iomanip>

冒泡排序(具体题目+C++代码)_c++桶排序代码-CSDN博客 

标签:元素,洛谷,平均值,++,sum,深基,P5738,循环,数组
From: https://blog.csdn.net/2401_86982397/article/details/144223603

相关文章

  • P5711 【深基3.例3】闰年判断
    hello大家好,这里是栋瓜吖题目描述输入一个年份,判断这一年是否是闰年,如果是输出 11,否则输出 00。15821582 年以来,闰年的定义:普通闰年:公历年份是 44 的倍数,且不是 100100 的倍数的,为闰年(如 20042004 年、20202020 年等就是闰年)。世纪闰年:公历年份是整百数的,必须是......
  • 洛谷 P1537 弹珠(DP)
    题目传送门https://www.luogu.com.cn/problem/P1537解题思路这是一道DP题……设  表示前  种弹珠,两人差距为  是否可行。那对于价值为  的弹珠,我们可以枚举一个  表示前者选  个这种弹珠,那么后者就会选  个弹珠(其中 表示价值为 的弹珠的数量)。易得转......
  • 洛谷P1039 [NOIP2003 提高组] 侦探推理
    ProblemSolve较为快速且好想的暴力方法是枚举m个人中选n个的组合方案,然后对证词进行检验,时间复杂度\(O(\frac{m!}{n!^2}p)\),仔细算算竟然能够在2e8左右通过但实际上这道题在当年肯定是给不了你2e8/sec的算力的,这道题目能够评蓝我觉得上面方法肯定是不配的结合€€£在18年及......
  • 洛谷题单指南-线段树-P4513 小白逛公园
    原题链接:https://www.luogu.com.cn/problem/P4513题意解读:给定序列a[n],支持两种操作:1.查询区间[l,r]内的最大子段和2.将a[x]修改成s,输出其中每一个查询操作的结果。解题思路:区间问题依然想到线段树,问题主要在于线段树的节点要维护哪些信息:最直接的,肯定要维护节点所表示区间的......
  • 洛谷 P3395 路障 C语言 bfs(想复杂的思路)
    题目:https://www.luogu.com.cn/problem/P3395题目描述B君站在一个n×n 的棋盘上。最开始,B君站在(1,1) 这个点,他要走到(n,n) 这个点。B君每秒可以向上下左右的某个方向移动一格,但是很不妙,C君打算阻止B君的计划。每秒结束的时刻,C君会在 (x,y)上摆一个路障。B......
  • 【洛谷】P1002 [NOIP2002 普及组] 过河卒
    #include<iostream>usingnamespacestd;constints1[]={0,-2,-1,1,2,2,1,-1,-2};constints2[]={0,1,2,2,1,-1,-2,-2,-1}; //马可以走到的位置,上下对应longlongf[80][80],s[80][80];intmain(){ longlongi,b1,b2,m1,m2; cin>>b1>......
  • 洛谷P4387 【深基15.习9】验证栈序列(c嘎嘎)
    题目链接:P4387【深基15.习9】验证栈序列-洛谷|计算机科学教育新生态题目难度:普及/提高解题思路:首先这道题很明显是要用栈来解决的(题目都已经明示了),我们得利用好栈的后进先出的特点来模拟这道题,先读入入栈和出栈序列,然后将遍历入栈序列,边遍历边压入栈,然后与出栈序列比......
  • 洛谷 P1683 入门
    入门题目描述不是任何人都可以进入桃花岛的,黄药师最讨厌像郭靖一样呆头呆脑的人。所以,他在桃花岛的唯一入口处修了一条小路,这条小路全部用正方形瓷砖铺设而成。有的瓷砖可以踩,我们认为是安全的,而有的瓷砖一踩上去就会有喷出要命的毒气,那你就死翘翘了,我们认为是不安全的。你只能......
  • 洛谷P11361 [NOIP2024] 编辑字符串
    ProblemSolve首先任意更换相邻元素任意次等同于在可交换范围内随便移动这题是求最优解,直观想到DP和贪心,但是容易反应过来本题DP的话很难做到无后效性,且状态较多,故尝试贪心不难发现,我们从左往右遍历的某个时刻进行交换后所得到的局部最优解总是答案的一种方案的一部分原因......
  • 洛谷P1880 [NOI1995] 石子合并 题解
    此题解以纪念我终于差不多大概搞懂区间dp了(插个存档点,到时候忘了再回来看看)。P1880[NOI1995]石子合并题解在做这道题之前,可以看看P1775石子合并(弱化版)(一道题解帮你搞定两道题,多划算)。P1775石子合并(弱化版)形式化的题面一堆石头摆在你面前,让你把他们扔到一起,每次扔......