Fork me on GitHub

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

   

    return 0;

}

 

posted @ 2018-02-01 23:34  husterzxh  阅读(343)  评论(0编辑  收藏  举报