用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 09:34:07 浏览: 112
用C++实现长整数的输入输出
你好!对于题目描述的问题,我可以给你一个基于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> freqMap;
pair<int, int> mostFrequentPair;
int maxFreq = 0;
for (auto& p : pairs) {
int freq = ++freqMap[p.first + p.second];
if (freq > maxFreq) {
maxFreq = freq;
mostFrequentPair = p;
}
}
return mostFrequentPair;
}
int main() {
int n;
cin >> n;
vector<pair<int, int>> pairs;
for (int i = 0; i < n; i++) {
int a, b;
cin >> a >> b;
pairs.push_back(make_pair(a, b));
}
pair<int, int> mostFrequentPair = findMostFrequentPair(pairs);
cout << mostFrequentPair.first << " " << mostFrequentPair.second << endl;
cout << findMostFrequentPair.count(mostFrequentPair) << endl;
return 0;
}
```
这段代码首先读取输入的整数对,并使用一个unordered_map来记录每个整数对出现的次数。然后,它遍历整个整数对的序列,更新最频繁出现的整数对和出现次数。最后,它输出最早出现的最频繁整数对和出现次数。
希望这可以帮助到你!如果你还有其他问题,请随时问我。
阅读全文