2 条题解
-
0
这是一道基础的 数据处理与统计计算 题目。我们需要对输入的浮点数进行排序,去除极值后计算平均值和误差。 解题思路 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
- 上传者