问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。 输入:S={1,2,2,2,3,5} 输出:所重集S的众数是2,其重数为3.用c++语言写出
时间: 2024-11-24 12:42:03 浏览: 4
众数问题给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重
5星 · 资源好评率100%
在C++中,你可以使用STL(标准模板库)中的`unordered_map`来解决这个问题,因为它可以高效地存储元素及其出现次数。以下是一个简单的C++函数,用于找出给定多重集合S中的众数:
```cpp
#include <iostream>
#include <unordered_map>
int findMode(const std::vector<int>& S) {
std::unordered_map<int, int> freqMap;
for (int num : S) {
freqMap[num]++;
}
int maxCount = 0, mode = -1;
for (const auto& pair : freqMap) {
if (pair.second > maxCount) {
maxCount = pair.second;
mode = pair.first;
}
}
return mode;
}
int main() {
std::vector<int> S = {1, 2, 2, 2, 3, 5};
int result = findMode(S);
std::cout << "众数是: " << result << ", 重数为: " << count(S.begin(), S.end(), result) << std::endl; // 计算S中该众数的实际出现次数
return 0;
}
```
在这个代码中,我们首先遍历集合S,更新每个元素的频率。然后,我们再次遍历频率映射,找到频率最高的元素即为众数。最后,在`main`函数中,我们还计算了众数在原始数组S中实际出现的次数。
运行这个程序会输出:
```
众数是: 2, 重数为: 3
```
阅读全文