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;

    }

  • 相关阅读:
    Oracle Core 学习笔记二 Transactions 和 Consistency 说明
    Oracle AUTO_SPACE_ADVISOR_JOB 说明
    Windows 下 ftp 上传文件 脚本
    Oracle 11g 中 Direct path reads 特性 说明
    Linux 使用 wget 下载 Oracle 软件说明
    Oracle 10g read by other session 等待 说明
    Oracle 11g RAC INS06006 Passwordless SSH connectivity not set up between the following node(s) 解决方法
    SecureCRT 工具 上传下载数据 与 ASCII、Xmodem、Ymodem 、Zmodem 说明
    Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
    Oracle RESETLOGS 和 NORESETLOGS 区别说明
  • 原文地址:https://www.cnblogs.com/husterzxh/p/8450232.html
Copyright © 2011-2022 走看看