CCF-CSP 201612-1中间数 满分题解
题目链接:201612-1中间数
思路:
1.题目要求求中间数的值,则先将该序列进行排序;
2.根据对称性,该中间数的值,应该出现在排序完后的新序列的中间;
3.循环统计比中间数小的数的个数,和比中间数大的数的个数,再进行判断;
具体代码:
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1010;
int n;
int a[N];
int main()
{
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n);//排序
int suml=0;//表示比中间值小的数的个数
int sumr=0;//表示比中间值大的数的个数
//循环遍历
for(int i=0;i<n;i++)
{
if(a[i]<a[n/2])
{
suml++;
}
else if(a[i]>a[n/2])
{
sumr++;
}
}
if(suml==sumr) cout<<a[n/2]<<endl;
else cout<<-1<<endl;
return 0;
}