C++实现给定含有n 个元素的多重集合 S,每个元素在 S中出现的次数称为该元素的重数。多重集 S中重数最大的元素称为众数。例如,S1,2,2,2,3,5。多重集 S的众数是2,其重数为3。 算法设计:对于给定的由 n 个自然数组成的多重集 S,计算S的众数及其重数数据输入:输入数据由文件名为 input.txt 的文本文件提供。文件的第 1行为多重集S中元素个数n;在接下来的n 行中,每行有一个自然数。结果输出:将计算结果输出到文件 output.txt。输出文件有 2行,第 1行是众数,第2 行是重数。
时间: 2024-02-18 13:05:08 浏览: 84
好的,以下是使用 C++ 实现给定含有 n 个元素的多重集合 S,计算 S 的众数及其重数的代码,结果输出到 output.txt 文件中:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <unordered_map>
using namespace std;
int main() {
ifstream input("input.txt");
ofstream output("output.txt");
int n;
input >> n;
vector<int> S(n);
for (int i = 0; i < n; i++) {
input >> S[i];
}
unordered_map<int, int> cnt;
for (auto x : S) {
cnt[x]++;
}
int mode = 0, mode_count = 0;
for (auto it : cnt) {
if (it.second > mode_count) {
mode = it.first;
mode_count = it.second;
}
}
output << mode << endl;
output << mode_count << endl;
input.close();
output.close();
return 0;
}
```
首先,我们使用 `ifstream` 和 `ofstream` 分别打开输入文件和输出文件。接着,我们读取输入文件中的内容,第一行为多重集合 S 中元素的个数,我们使用 `input >> n` 语句将其读取到变量 n 中。接下来的 n 行中,每行有一个自然数,我们使用 `input >> S[i]` 语句将其读取到列表 S 的第 i 个元素中。
然后,我们使用 `unordered_map` 统计列表 S 中每个元素出现的次数,并将结果保存到哈希表 cnt 中。接着,我们遍历 cnt,找到出现次数最多的元素及其出现次数,保存在变量 mode 和 mode_count 中。
最后,我们使用 `output << mode << endl` 和 `output << mode_count << endl` 语句将结果写入到输出文件中,注意要添加换行符。最后,关闭输入文件和输出文件,程序结束。
阅读全文