c++实现描述 【背景描述】教堂在"新年许愿"活动,搜集了n名参与者的运行数字,想找出其中人气最高的幸运数字(0~10),帮助这些人实现愿望。 【问题描述】输入n个数字保存至数组中,找出其中出现次数最多的数字(已知出现最多的数字有一个),输出出现次数最多的数字以及其出现的次数。
时间: 2024-03-02 20:50:31 浏览: 40
可以使用 C++ 的 STL 库中的 map 或者 unordered_map 来实现。
具体步骤如下:
1. 定义一个 unordered_map<int, int> 统计每个数字出现的次数,其中键为数字,值为出现次数。
2. 遍历输入的数组,对于每个数字,如果在 map 中已经存在,则将其对应的值加 1,否则将其加入 map 中,并将其对应的值设为 1。
3. 遍历 map,找到出现次数最多的数字及其出现次数,输出即可。
下面是具体的 C++ 代码实现:
```c++
#include <iostream>
#include <unordered_map> // 引入 unordered_map 库
using namespace std;
int main() {
int n;
cin >> n;
unordered_map<int, int> cnt; // 定义 map,用于统计数字出现次数
int max_num = -1, max_cnt = -1; // 记录出现次数最多的数字和出现次数
for (int i = 0; i < n; i++) {
int num;
cin >> num;
cnt[num]++; // 更新数字出现次数
if (cnt[num] > max_cnt) { // 更新出现次数最多的数字和出现次数
max_cnt = cnt[num];
max_num = num;
}
}
cout << max_num << " " << max_cnt << endl; // 输出结果
return 0;
}
```