请用C++编写:给出若干个正整数,请找出出现次数最多的数。 输入格式: 在一行中输入若干个数,以空格间隔(读入数的总个数不超过5000)。 输出格式: 输出出现次数最多的数(若答案不唯一,输出最小的那个)。
时间: 2024-04-05 16:33:35 浏览: 130
以下是使用C++编写的解决方案:
```cpp
#include <iostream>
#include <unordered_map>
#include <vector>
int main() {
std::unordered_map<int, int> frequency;
std::vector<int> numbers;
int num;
// 读取输入的数
while (std::cin >> num) {
numbers.push_back(num);
}
// 统计每个数的出现次数
for (int i = 0; i < numbers.size(); i++) {
frequency[numbers[i]]++;
}
int maxFreq = 0;
int maxNum = numbers[0];
// 找出出现次数最多的数
for (auto it = frequency.begin(); it != frequency.end(); it++) {
if (it->second > maxFreq || (it->second == maxFreq && it->first < maxNum)) {
maxFreq = it->second;
maxNum = it->first;
}
}
// 输出结果
std::cout << maxNum << std::endl;
return 0;
}
```
请注意,上述代码假设输入以EOF(文件结束符)作为终止符。如果你在控制台输入数字后想要结束输入,请使用Ctrl+Z(Windows)或Ctrl+D(Linux/Mac)来表示文件结束符。
阅读全文