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

139 阅读1分钟

问题描述 
试题编号: 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;


}


\