出现次数最多的数
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数组,输出元素值最大的下标,如果这样的数有多个,则输出最小的一个。
算法结束。
提示:散列。
给定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; }
相关文章推荐
- MIPS体系结构--指令集
- 新的计划——XX监测与预警平台
- HDU-1087Super Jumping! Jumping! Jumping!
- AJAX-----script简单版
- test
- ARToolKit for Unity
- __restrict,restrict关键字
- tail -f -F是个好东西
- java集合
- Android 网络通信框架Volley的二次封装
- 学习C++看到的关于参数以及参数传递方式
- 《The Google File System》论文阅读笔记——GFS设计原理
- 批量文件重命名工具
- c++中的声明和定义的区别,以及关键字extern的作用
- NYOJ 迷宫寻宝(一)
- XX2Vec算法汇总
- 【NOIP模拟】我的天
- PCM data flow - 7 - Frame & Period
- MySQL 5.7.11官网免安装版无法启动的问题
- magento 导入数据库时遇到的问题