问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该 元素的重数。多重集S中重数最大的元素称为众数。 输入:S=(1,2,2,3,5) 输出:所重集S的众数是2,其重数为3. 程序: 结果: (截图)
时间: 2024-09-26 14:11:09 浏览: 54
为了找到多重集合S中的众数(即出现频率最高的元素),我们可以使用哈希表或映射结构来存储元素及其对应的出现次数。以下是一个简单的C++代码示例,用于计算并返回众数:
```cpp
#include <iostream>
#include <unordered_map>
#include <vector>
std::pair<int, int> findMode(const std::vector<int>& S) {
std::unordered_map<int, int> countMap;
for (int num : S) {
countMap[num]++;
}
int maxCount = 0;
int mode = -1;
for (const auto& pair : countMap) {
if (pair.second > maxCount) {
maxCount = pair.second;
mode = pair.first;
}
}
return {mode, maxCount};
}
int main() {
std::vector<int> S = {1, 2, 2, 3, 5};
std::pair<int, int> result = findMode(S);
std::cout << "所多重集S的众数是 " << result.first << ", 其重数为 " << result.second << "." << std::endl;
// 结果输出:(2, 3)
return 0;
}
```
这个程序首先创建了一个无序映射`countMap`,遍历集合`S`并将每个元素及其计数值增加。然后,它再次遍历`countMap`,找出具有最大计数值的元素,即众数及其重数。
运行这段代码后,你会看到输出为`(2, 3)`,这意味着在给定的集合`S`中,数字2出现了3次,是最多的,所以2是众数。
阅读全文