2 条题解

  • 0
    @ 2026-2-16 10:52:32

    这是一道基础的 数据处理与统计计算 题目。我们需要对输入的浮点数进行排序,去除极值后计算平均值和误差。 解题思路 1.读取输入:首先读取样本数量 n,然后读取 n 个浮点数存入数组。 2.排序:对数组进行升序排序,这样最大值就在最后,最小值就在最前。 3.计算平均值: .剔除第一个元素(最小值)和最后一个元素(最大值)。 .计算剩余 n−2个元素的总和。 .用总和除以n−2 得到平均值。 4.计算误差(最大绝对偏差): .遍历剔除极值后的所有元素。 .计算每个元素与平均值之差的绝对值。 .找出这些绝对值中的最大值。 5.格式化输出:根据题目要求,保留两位小数输出。 #include #include #include #include #include

    using namespace std;

    int main() { int n; cin >> n;

    vector<double> samples(n);
    for (int i = 0; i < n; i++) {
        cin >> samples[i];
    }
    
    // 1. 排序,方便剔除最大最小值
    sort(samples.begin(), samples.end());
    
    // 2. 计算有效样本的平均值
    // 剔除 samples[0] (最小) 和 samples[n-1] (最大)
    double sum = 0.0;
    for (int i = 1; i < n - 1; i++) {
        sum += samples[i];
    }
    double average = sum / (n - 2);
    
    // 3. 计算误差(最大绝对偏差)
    double max_error = 0.0;
    for (int i = 1; i < n - 1; i++) {
        double diff = fabs(samples[i] - average);
        if (diff > max_error) {
            max_error = diff;
        }
    }
    
    // 4. 输出结果,保留两位小数
    cout << fixed << setprecision(2) << average << " " << max_error << endl;
    
    return 0;
    

    }

    信息

    ID
    6952
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    2
    已通过
    2
    上传者