zoukankan      html  css  js  c++  java
  • CSP201612-1:中间数

    引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(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 ", input[i]);

                sign = 0;

            }

            i = j;

        }

        if (sign)

        {

            printf("%d ", -1);

        }

          

        

        return 0;

    }

  • 相关阅读:
    sort color (荷兰国旗)
    先序遍历和后序遍历构建二叉树
    二叉树的遍历
    排序
    内存相关内容
    chrome控制台console方法表
    记一次移动端CSS引发的小Bug
    JavaScript的事件
    浅谈webpack打包原理
    JS模块化进程
  • 原文地址:https://www.cnblogs.com/husterzxh/p/8450232.html
Copyright © 2011-2022 走看看