您的位置:首页 > 其它

出现次数最多的数

2016-04-02 18:36 274 查看
问题描述

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

输入格式

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

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

输出格式

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

样例输入

6

10 1 10 20 30 20

样例输出

10 

算法:

算法开始。
读入n。
如果i小于n继续,否则跳到第六步。
读入si,count[si]++。i++。
回到第三步。
循环遍历count数组,输出元素值最大的下标,如果这样的数有多个,则输出最小的一个。
算法结束。
提示:散列。

#include <stdio.h>
#include <stdlib.h>
#define MAX 10001

int main(int argc, const char * argv[]) {
int n = 0, i = 0, *count = NULL, s, max = 0, index = 0;
scanf("%d", &n);
count = (int*)calloc(MAX, sizeof(int));
for(i = 0; i < n; i++){
scanf("%d", &s);
count[s]++;
}
for(i = 1; i < MAX; i++){
if(count[i] > max){
index = i;
max = count[i];
}
}
printf("%d", index);
free(count);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: