用C++做此题题目描述 小明是一个记忆高手,他有自己的训练方式,比如:给他一个长度为n的整数序列,在他浏览一遍后,他就能马上说出出现最多的整数以及出现的次数。现在他为了挑战自己,现在有一个长度为n整数对,在浏览一遍后,能准确说出出现最多的整数对,以及该整数对出现的次数。如果两个不同的整数对出现的次数一样多,说出出现最早的整数对。为了验证自己的准确性,他请你帮他设计一个程序。验证自己的答案 输入 第一个行:一个整数n 第2到n+1行:每行两个整数ai,bi,表示一个整数对 输出 第一行:按照输入顺序输出最早的出现最多的整数对(中间有空格分隔) 第二行:最多整数对出现的次数 样例输入 5 1 2 3 4 3 4 1 2 2 3 样例输出 1 2 2
时间: 2024-04-10 14:34:07 浏览: 126
你好!对于这个问题,你可以使用C++来解决。下面是一个示例代码,它可以帮助你实现这个功能:
```cpp
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
pair<int, int> findMostFrequentPair(vector<pair<int, int>>& pairs) {
unordered_map<int, int> pairCount;
int maxCount = 0;
for (const auto& pair : pairs) {
int count = ++pairCount[pair.first * 1000 + pair.second];
maxCount = max(maxCount, count);
}
pair<int, int> mostFrequentPair;
for (const auto& pair : pairs) {
int count = pairCount[pair.first * 1000 + pair.second];
if (count == maxCount) {
mostFrequentPair = pair;
break;
}
}
return mostFrequentPair;
}
int main() {
int n;
cin >> n;
vector<pair<int, int>> pairs(n);
for (int i = 0; i < n; i++) {
cin >> pairs[i].first >> pairs[i].second;
}
pair<int, int> mostFrequentPair = findMostFrequentPair(pairs);
cout << mostFrequentPair.first << " " << mostFrequentPair.second << endl;
cout << n << endl;
return 0;
}
```
你可以将上述代码保存为一个名为 `main.cpp` 的文件,并使用C++编译器编译运行它。输入和输出的格式与你提供的示例相同。希望这能帮助到你!如果你有任何其他问题,请随时问我。
阅读全文