算法训练 出现次数最多的整数
2015-12-16 20:11
281 查看
问题描述
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
样例输出
150
这道题并不难,但是却很坑人,因为输入的n有可能不是正数,测试数据中的n有负数和0,因此需要加个判断,当n<=0的时候不输出
用map容器很快就能做出来.
#include <iostream>
#include <map>
using namespace std;
map<int, int > s;
map<int, int >::iterator it;
int main()
{
int n;
int max = 0;
int num;
cin >> n;
if (n > 0)
{
while (n--)
{
int k;
cin >> k;
s[k]++;
}
it = s.begin();
for (; it != s.end(); it++)
{
if ((*it).second > max)
{
num = (*it).first;
max = (*it).second;
}
}
cout << num << endl;
}
system("pause");
}
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入
5
100
150
150
200
250
样例输出
150
这道题并不难,但是却很坑人,因为输入的n有可能不是正数,测试数据中的n有负数和0,因此需要加个判断,当n<=0的时候不输出
用map容器很快就能做出来.
#include <iostream>
#include <map>
using namespace std;
map<int, int > s;
map<int, int >::iterator it;
int main()
{
int n;
int max = 0;
int num;
cin >> n;
if (n > 0)
{
while (n--)
{
int k;
cin >> k;
s[k]++;
}
it = s.begin();
for (; it != s.end(); it++)
{
if ((*it).second > max)
{
num = (*it).first;
max = (*it).second;
}
}
cout << num << endl;
}
system("pause");
}
相关文章推荐
- 蓝桥杯基础练习 十进制转换16进制
- 蓝桥网 算法提高 快乐司机
- Linux之共享库封装、使用的典型demo
- 2015河南科技学院高校CSDN俱乐部--excel讲解
- 2015-12-13 第八天笔记整理-第一部分
- homebrew使用
- zoom作用
- Numerical Analysis - Integration - Basics
- cocos2d-js 在Chrome的最小字体
- linux中的memory management和page mapping
- jQuery插件-JSON与XML互转
- UI数据库
- leetcode -- Simplify Path -- 字符串处理的题目
- h264中avc和flv数据的解析 .
- CodeForces 604D 【离散数学 置换群】
- CodeForces 373A
- MPAndroidChart 教程:数据格式器 ValueFormatter(五)
- 使用Unity3D的50个技巧:Unity3D最佳实践
- 用正则表达式 搜索代码
- python之字符串格式化