输入一组无序的整数,编程输出其中出现次数最多的整数及其出现次数。\n\n【输入形式】\n\n先从标准输入读入整数的个数(大于等于1,小于等于100),然后在下一行输入这些整数,各整数之间以一个空格分隔。\n\n【
时间: 2023-05-31 12:18:27 浏览: 188
### 回答1:
题目描述:输入一个无序的整数,编程输出其中出现次数最多的整数及其出现次数。
【输入形式】
先从标准输入读入整数的个数(大于等于1,小于等于100),然后再从标准输入读入这些整数,各整数之间以一个空格分隔。
【输出形式】
输出有两行。第一行输出出现次数最多的整数及其出现次数,中间以一个空格分隔,若有多个整数出现次数相同,则输出其中较小的一个。第二行输出按输入顺序将各整数出现次数从大到小输出的结果,同一出现次数的整数之间以一个空格分隔。
【样例输入】
10
3 2 3 2 2 5 5 5 5 1
【样例输出】
5 4
2 3 3 1 1
【样例说明】
其中出现次数最多的是整数5,出现了4次。按照出现次数从大到小的顺序,依次是2(出现了3次),3(出现了2次),1(出现了1次)。
### 回答2:
题解】
这道题我们可以利用哈希表来解决。首先,我们可以先读入整数的个数,并创建一个空的哈希表用来统计每个整数出现的次数。然后,再读入这些整数,并在哈希表中更新每个整数出现的次数。最后,遍历哈希表,找出出现次数最大的整数即可。
具体实现可以参考下面的代码:
```
#include <iostream>
#include <unordered_map>
using namespace std;
int main() {
int n; // 整数的个数
cin >> n;
unordered_map<int, int> map; // 哈希表
// 读入整数并统计出现次数
for(int i = 0; i < n; i++) {
int x;
cin >> x;
map[x]++;
}
// 遍历哈希表,找出出现次数最多的整数
int max_val = 0, max_key = 0;
for(auto p : map) {
if(p.second > max_val) {
max_val = p.second;
max_key = p.first;
}
}
// 输出结果
cout << max_key << " " << max_val << endl;
return 0;
}
```
这段代码中,我们使用了 C++11 中的 unordered_map 来实现哈希表。unordered_map 是 STL 中的一个容器,它的元素是键值对 (key, value)。在这个例子中,键是整数 x,值是整数 x 出现的次数。
在读入每个整数时,我们可以直接使用 unordered_map 的 [] 运算符来访问键为 x 的元素,并将其值加一。如果这个键不存在,unordered_map 会自动添加一个新的键值对。
在遍历哈希表时,我们使用了 auto 关键字和 C++11 中的 range-based for 循环。auto 关键字用来自动推断 p 的类型,p 代表 unordered_map 的一个元素,类型为 pair<int, int>,其中第一个元素是键 (key),第二个元素是值 (value)。range-based for 循环可以遍历一个 STL 容器的所有元素。
最后,我们输出出现次数最多的整数及其出现次数。注意要使用空格分隔两个数字,并且最后要输出一个换行符。
总的来说,这道题像是一个简单的哈希表入门题,它考察了哈希表的基本操作,包括创建、查询、更新、遍历等。熟练掌握哈希表的操作可以解决很多实际问题。
### 回答3:
题解】
这道题是一道典型的统计问题,我们需要统计一组无序的整数中出现次数最多的整数以及其出现次数。
首先,我们可以使用一个数组来存储输入的整数,然后统计每个数出现的次数,最后找到出现次数最多的数即可。
具体实现步骤如下:
1. 从标准输入读入整数的个数和这些整数:
```c++
int n; // 整数的个数
cin >> n;
int nums[n]; // 存储整数的数组
for (int i = 0; i < n; i++) {
cin >> nums[i];
}
```
2. 统计每个数出现的次数,可以使用一个map来存储:
```c++
map<int, int> count; // 数字及其出现次数
for (int i = 0; i < n; i++) {
count[nums[i]]++;
}
```
3. 找到出现次数最多的数及其出现次数:
```c++
int maxcount = 0; // 最大出现次数
int maxnum = 0; // 出现次数最多的数
for (auto c : count) {
if (c.second > maxcount) {
maxcount = c.second;
maxnum = c.first;
}
}
```
4. 输出结果:
```c++
cout << maxnum << " " << maxcount << endl;
```
完整代码如下:
阅读全文