博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSP201612-1:中间数
阅读量:5062 次
发布时间:2019-06-12

本文共 1336 字,大约阅读时间需要 4 分钟。

引言:CSP是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试,针对计算机软件开发、软件测试、信息管理等领域的专业人士进行能力认证。认证对象是从事或将要从事IT领域专业技术与技术管理人员,以及高校招考研究生的复试对象。

 

  • 问题描述

在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。

给定一个整数序列,请找出这个整数序列的中间数的值。

  • 输入格式

输入的第一行包含了一个整数n,表示整数序列中数的个数。

第二行包含n个正整数,依次表示a1, a2, …, an。

  • 输出格式

如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。

  • 样例输入

6

2 6 5 6 3 5

  • 样例输出

5

  • 样例说明

5小的数有2个,比5大的数也有2个。

  • 样例输入

4

3 4 6 7

  • 样例输出

-1

  • 样例说明

在序列中的4个数都不满足中间数的定义。

  • 样例输入

5

3 4 6 6 7

  • 样例输出

-1

  • 样例说明

在序列中的5个数都不满足中间数的定义。

  • 评测用例规模与约定

对于所有评测用例,1 n 10001 ai 1000

 

  • 思路说明

首先利用sort()函数对输入的n个数字进行升序排列,这样所有值相同的数都会相邻。然后通过循环可以找到一组重复的数的起点i,终点j,只要i之前的数的个数等于j之后的数的个数,则说明这一组重复的数就是我们要找的中间数。

  • 源代码

# include <stdio.h>

# include <stdlib.h>

# include <memory.h>

# include <algorithm>

 

using namespace std;

 

bool compare(int a, int b)

{

    return a < b;

}

 

int main(void)

{

    int n; //个数

    int sign = 1;

    scanf("%d", &n);

    int *input = (int *)malloc(sizeof(int) * n);

    memset(input, 0, sizeof(int) * n);

    for (int i = 0; i < n; i++)

    {

        scanf("%d", input+i);

    }

    

    sort(input, input+n, compare); //升序排列

    

 

    int i, j;

    for (i = 0; i < n; )

    {

        for (j = i; j < n; j++)

        {

            if (input[i] != input[j])

            {

                break;

            }

        }

        if (i == n - j) //大于input[i]数的个数 = 小于input[i]数的个数

        {

            printf("%d\n", input[i]);

            sign = 0;

        }

        i = j;

    }

    if (sign)

    {

        printf("%d\n", -1);

    }

      

    

    return 0;

}

 

转载于:https://www.cnblogs.com/husterzxh/p/8450232.html

你可能感兴趣的文章
非对称加密
查看>>
bzoj 3413: 匹配
查看>>
从下周开始就要采用网上记录值班日志了
查看>>
在qq中可以使用添加标签功能
查看>>
eclipse 自定义布局
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
【AppScan心得】IBM Rational AppScan 无法记录登录序列
查看>>
[翻译] USING GIT IN XCODE [4] 在XCODE中使用GIT[4]
查看>>
简化通知中心的使用
查看>>
SpringMVC的@Validated校验注解使用方法
查看>>
Python之os模块
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
【蓝桥杯】PREV-21 回文数字
查看>>
html 简介
查看>>
python使用上下文对代码片段进行计时,非装饰器
查看>>
js中比较实用的函数用法
查看>>
安装预览版镜像后无法检测到预览版更新的解决方案
查看>>
【bzoj5099】[POI2018]Pionek 双指针法
查看>>
别让安全问题拖慢了 DevOps!
查看>>
JAR打包和运行
查看>>