众数问题~无奈啊,所以请教大家

来源:百度知道 编辑:UC知道 时间:2024/06/03 15:04:21
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重
集S中重数最大的元素称为众数。
例如,S={1,2,2,2,3,5}。
多重集S的众数是2,其重数为3。

编程任务:
对于给定的由n 个自然数组成的多重集S,编程计算S 的众数及其重数。

Input

输入数据第1行多重集S中元素个数n;接下来的n 行中,每行有一个自然数。

Output

程序运行结束时,输出有2 行,第1 行给出众数,第2 行是重数。

Sample Input

6
1
2
2
2
3
5

Sample Output

2
3
请用C或者C++程序解该问题
大哥,能不能再帮我调试一下?好像有一个错误、、
呵呵,谢谢哦
愿意再送您30分表示感激!!

可以通过C++标准库里的map类型来实现,如果楼主没用过map的话,只需知道它是一个键和值得对就行了。如同哈希表。

#include <iostream>
#include <map>
using std::cout;
using std::endl;
using std::cin;
using std::map;

//定义一个map类型,键为数,值为其重复次数
map<int, int> s_map;
typedef map<int, int>::const_iterator Iterator;

//计算的函数,参数为一个数组和其长度
Iterator calc(int* list, int len)
{
for (int i=0; i<len; ++i)
{
++s_map[list[i]];
}
//找出众数,即出现次数最多的数
Iterator times = s_map.begin();
Iterator itr;
for (itr=s_map.begin(); itr != s_map.end(); ++itr)
{
if(times->second < itr->second)
times = itr;
}
return times;
}
int main()
{
int size;
cin >> size; //输入多重集S元素的个数
int* ps = new int[size];
for (int i=0; i<size; ++i)
{
cin >> ps[i