201903-1
试题名称: 小中大
时间限制: 1.0s
内存限制: 512.0MB
问题描述:

中位数:将数据排序后,位置在最中间的数值.当样本数为奇数时,中位数=第(N+1)/2个数据 ; 当样本数为偶数时,中位数为第N/2个数据与第N/2+1个数据的算术平均值 .
(注意:不需要剔除重复的数据之后再计算中位数)
初中学过的中位数其实在现实中运用得很多,比如说一个公司的人员工资的中位数,肯定有很多人的工资是相同的呀!自己怎么就忘了定义呢。
错误的代码:只得了15分,原因是自己理解错了中位数的定义,所以解题过程不对(亏自己前几天还做了一道中位数的题目)
#include<iostream>
#include<vector>
using namespace std;
const int N = 100005;
int main()
{
float a[N]; vector<float> b;
int n;
cin>> n; cin >> a[0]; b.push_back(a[0]);
for (int i = 1; i < n; i++)
{
cin >> a[i];
if (a[i] != a[i - 1])
b.push_back(a[i]);
}
if (b

这篇博客主要讨论了2019年CSP试题中的"小中大"问题,强调了中位数的正确定义,并分享了导致错误解题思路的原因。博主指出,考虑到样本中可能存在重复数值,中位数的计算不需要先去除重复数据。文章通过分析错误代码(只得15分)的原因,指出理解中位数概念的重要性。最后,博主提供了确保排序并求解中位数的C++满分代码。
最低0.47元/天 解锁文章
288

被折叠的 条评论
为什么被折叠?



