您的位置:首页 > 编程语言

CCF CSP 编程题目和解答-----试题名称: 出现次数最多的数 --------201312-1

2017-03-14 23:35 399 查看
问题描述 

试题编号: 201312-1 

试题名称: 出现次数最多的数 

时间限制: 1.0s 

内存限制: 256.0MB 

问题描述: 

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

输入格式     输入的第一行只有一个正整数 n(1 ≤ n ≤ 1000),表示数字的 个数。     输入的第二行有 n 个整数 s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。 

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

样例输入 6 10 1 10 20 30 20 

样例输出 10 

/**

解题思路:

使用一个大小为10001的int数组temp,数组中的第i个值存放输入的数中i出现的个数

然后遍历一次输入的数据,统计出每个数出现的次数

最后遍历一次temp,找到temp中最大的那个数,输出其对应的位置即为出现次数最多的数

**/


//以下代码是本人根据自己的理解编写,不一定是最好的解决思路,有更好思路的大佬欢迎指正。

#include<iostream>
#include<vector>
#include<string>
#include<bitset>
#include<map>
#include<algorithm>
#include<queue>

using namespace std;

int main()
{
int n;
cin >> n;
vector<int> all(n, 0);
for (int i = 0; i < n; i++)
{
cin >> all[i];
}
int tem[10001] = { 0 };
for (int i = 0; i < all.size(); i++)
{
int t = all[i];
tem[t]++;
}
int maxnum =0;
int maxcount = 0;
for (int i = 1; i < 10001; i++)
{
if (tem[i] > maxcount)
{
maxnum = i;
maxcount = tem[i];
}
}
cout << maxnum << endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: