欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-08-09 21:45:25
引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的“计算机职业资格认证”考试,针对计算机软件开发、软件测试、信息管理等领域的专业人士进行能力认证。认证对象是从事或将要从事IT领域专业技术与技术管理人 ......

引言: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\n", result);

   

    return 0;

}