众数问题~无奈啊,所以请教大家
给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数...
给定含有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分表示感激!! 展开
集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分表示感激!! 展开
1个回答
展开全部
可以通过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];
}
Iterator itr = calc(ps, size);
cout << itr->first << endl //众数
<< itr->second << endl; //其重数
}
#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];
}
Iterator itr = calc(ps, size);
cout << itr->first << endl //众数
<< itr->second << endl; //其重数
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询