求中间数:CCF计算机职业资格认证考试模拟试题,编号:201612-1
来源:互联网 发布:软件售后工程师 编辑:程序博客网 时间:2024/04/29 17:23
问题描述
在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。
给定一个整数序列,请找出这个整数序列的中间数的值。
给定一个整数序列,请找出这个整数序列的中间数的值。
输入格式
输入的第一行包含了一个整数n,表示整数序列中数的个数。
第二行包含n个正整数,依次表示a1, a2, …, an。
第二行包含n个正整数,依次表示a1, a2, …, an。
输出格式
如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。
样例输入
6
2 6 5 6 3 5
2 6 5 6 3 5
样例输出
5
样例说明
比5小的数有2个,比5大的数也有2个。
样例输入
4
3 4 6 7
3 4 6 7
样例输出
-1
样例说明
在序列中的4个数都不满足中间数的定义。
样例输入
5
3 4 6 6 7
3 4 6 6 7
样例输出
-1
样例说明
在序列中的5个数都不满足中间数的定义。
评测用例规模与约定
对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。
解题思路:首先讲输入的数组按从小到大进行排序,求出中位数,然后将大于中位数的用big_than_middle计数,将小于中位数的用little_than_middle计数,判断两个数的大小,按要求输出结果。
代码如下:(该程序在debian系统下成功运行,在该题所在网站也成功提交正确)
#include<stdio.h>
#include<malloc.h>
int sort(int count,int *array) //采用直接插入算法对数组进行排序
{ /*直接插入排序(straight insertion sort)是一种简单的排序算法,基本思想是将第一个元素当做一个有序的子序列,然后从第二个记录依次进行插入,首先与已经排序好的有序子序列最大的数max进行比较,若大于等于max,则它就在原位置,若小于max,则向前继续与有序自序列max之前的数进行比较,直到找到小于的数的位置,插入该位置,将有序子序列依次向后移动一位*/
int i;
int j;
int e;
for(i=1;i<count;i++)
{
e=array[i];
for(j=i-1;j>=0&&e<array[j];j--)
{
array[j+1]=array[j];
}
array[j+1]=e;
}
}
int result(int *array,int count) //结果返回函数
{
int e;
int middle=count/2;
int i,little_than_middle=0,big_than_middle=0;
for(i=0;i<count;i++)
{
if(array[i]<array[middle])
little_than_middle++;
else if(array[i]>array[middle])
big_than_middle++;
else
;
}
if(little_than_middle==big_than_middle)
return array[middle];
else
return -1;
}
int main(void) //main函数
{
int count;
int *array;
int i;
scanf("%d",&count);
array=(int*)malloc(sizeof(int)*count); //为将要输入的整数申请内存
for(i=0;i<count;i++)
{
scanf("%d",&array[i]);
}
sort(count,array);
printf("%d\n",result(array,count));
free(array); //释放申请内存
return 0;
}
0 0
- 求中间数:CCF计算机职业资格认证考试模拟试题,编号:201612-1
- CCF计算机职业资格认证2016-12-1
- CCF计算机职业资格认证考试资料 部分题目答案 题库
- 首届CCF计算机职业资格认证考试题解(C++)
- 第五届CCF计算机职业资格认证考试题解(C++)
- 第四届CCF计算机职业资格认证考试题解(C++)
- 第三届CCF计算机职业资格认证考试题解(C++)
- 第二届CCF计算机职业资格认证考试题解(C++)
- 第六届CCF计算机职业资格认证考试题解(C++)
- 第六届CCF计算机职业资格认证考试题解(第三题)
- 第六届CCF计算机职业资格认证考试题解(第四题)
- 第五届计算机职业资格认证考试CCF (第一题)
- 第五届计算机职业资格认证考试CCF (第二题)
- 第五届计算机职业资格认证考试CCF (第三题)
- 2016 CCF-CSP 计算机职业资格认证考试 解题报告
- 第六届CCF计算机职业资格认证考试题解(1,2两水题)
- 第六届CCF计算机职业资格认证(试题B)
- CCF认证201612-1 中间数
- 对象
- 获取父类泛型
- 简单的纹理旋转以及平移操作
- jquery的ready与js的onload
- 冒泡排序(Bubble Sort)
- 求中间数:CCF计算机职业资格认证考试模拟试题,编号:201612-1
- HTML map标签
- Java为什么要使用内部类?
- ava.lang.VerifyError: class akka.remote.WireFormats$AkkaControlMessage overrides final method getUnk
- spring profile 多环境配置管理
- 关于C中字符数组,字符指针以及C++中string类型的两两转换及排序
- VIVO y15t 线刷 救砖 注意事项 刷机失败的一定要看
- 选择结构程序代码参考
- java 核心集合框架