• CSP201312-1:出现次数最多的数


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

    问题描述

      给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。

    输入格式

      输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。

      输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。

    输出格式

      输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。

    样例输入

    6

    10 1 10 20 30 20

    样例输出

    10

    源代码

    # include <stdio.h>

    # include <stdlib.h>

    # include <memory.h>

     

    struct storage{

        int key; 

        int value;

    };

     

    int main(void)

    {

        int n;  //个数

        int time = 0;

        int flag = 1;

        scanf("%d", &n);

       

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

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

        struct storage *handle = (struct storage *)malloc(sizeof(struct storage)*n);

        memset(handle, 0, sizeof(struct storage)*n);

       

        int i, j;

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

        {

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

        }

       

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

        {

             for (j = 0; j < time; j++)

             {

                 if (input[i] == handle[j].key)

                 {

                      handle[j].value += 1;

                      flag = 0;

                      break;

                 }

             }

             if (flag)

             {

                 handle[time].key = input[i];

                 handle[time].value = 1;

                 time += 1;

             }

             flag = 1;

        }

       

        int max = 0;

        int result = 0;

        for (i = 0; i < time; i++)

        {

             if (handle[i].value > max)

             {

                 max = handle[i].value;

                 result = handle[i].key;

             }  

             if (handle[i].value == max)

             {

                 if (result > handle[i].key)

                 {

                      max = handle[i].value;

                      result = handle[i].key;

                 }

             }

        }

        free(input);

        free(handle);

       

        printf("%d ", result);

       

        return 0;

    }

  • 相关阅读:
    [HDU6793] Tokitsukaze and Colorful Tree
    [NOI2020]命运
    [NOI2020]美食家
    模拟9
    晚测2
    模拟8
    联考4
    模拟7
    模拟6
    关于数论
  • 原文地址:https://www.cnblogs.com/husterzxh/p/8401793.html
Copyright © 2020-2023  润新知