题目

小f结识了璃月的天权星凝光,受邀观看一场戏剧比赛。本场比赛是面向新人的,所以云堇等老一辈戏子会作为评委, 对选手们的表现进行打分。本次比赛共有 n 位选手,m 位评委,每位评委会对选手进行打分。 正当小f观看比赛时,比赛的负责人告诉他需要他帮忙计算各个选手的得分平均值,但是小f不会,请你帮帮他。

输入:第一行两个数 n, m,表示选手个数与评委个数;第二行到第 n+1 行每行 m 个数,代表 m 位评委对第 i 名选手的打分情况。
输出:输出共 n 行,每行一个数,表示该选手的得分平均值,结果需保留两位小数。
数据范围:1 ≤ n, m ≤ 100,选手分数 x ∈ [0, 1000]。
提示:似乎并不需要将所有数据都记下来?

样例:

输入

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

输出

6.00
4.67
4.83
5.83
4.83
4.67
4.67

思路

average 函数传入评委数 m,在函数内逐个读入分数并累加,返回总和除以 m 的浮点结果; 主函数循环 n 次调用,每行输出两位小数

C++ · p73.cpp
#include<bits/stdc++.h>
using namespace std;

double average(int m){
    int sum=0,x;
    for(int c=0;c<m;c++){
        cin>>x;
        sum+=x;
    }
    return (double)sum/m;
}

int main(){
    int n,m;  // 选手,评委
    cin>>n>>m;
    for(int c=0;c<n;c++){
        double result=average(m);
        printf("%.2f\n",result);
    }
    return 0;
}

复杂度分析

  • 时间复杂度:O(n·m)。
  • 空间复杂度:O(1),边读边算,不存数组。
今日感受

题目提示"不需要存所有数据",边读边加,不用数组,读完直接返回平均值。

← 返回菜鸟的coding