I. 实验7-1-9 求整数序列中出现次数最多的数 题目描述 本题要求统计一个整型序列中出现次数最多的整数及其出现次数。 输入 输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。 输出 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。用c语言写
时间: 2023-10-30 11:04:41 浏览: 235
```c
#include <stdio.h>
int main()
{
int n, a[1001], max = 0, max_num = 0;
int count[10001] = {0}; // 统计每个数字出现的次数
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
count[a[i]]++; // 将出现的数字的计数加1
if (count[a[i]] > max) // 如果当前数字的出现次数大于历史最大值,更新最大值和最大数字
{
max = count[a[i]];
max_num = a[i];
}
}
printf("%d %d", max_num, max);
return 0;
}
```
相关问题
帮我写个python程序求整数序列中出现次数最多的数 (15?分) 本题要求统计一个整型序列中出现次数最多的整 数及其出现次数。 输入格式: 输入在一行中给出序列中整数个数N (0 输出格式: 在一行中输出出现次数最多的整数及其出现次 数, 数字间以空格分隔。 题目保证这样的数字是 唯一的。 输入样例:10 3 2 -1 5 3 4 3 0 3 2 输出样例:3 4
好的,以下是代码实现:
```python
n, *nums = map(int, input().split()) # 获取序列中整数个数N及整型序列nums
count_dict = {} # 定义一个空的字典,用于记录每个数出现的次数
# 遍历整型序列nums,统计每个数出现的次数
for num in nums:
if num not in count_dict:
count_dict[num] = 1
else:
count_dict[num] += 1
# 找出出现次数最多的数及其出现次数
max_num, max_count = None, 0
for num, count in count_dict.items():
if count > max_count:
max_num, max_count = num, count
# 输出结果
print(max_num, max_count)
```
输入样例:
```
10 3 2 -1 5 3 4 3 0 3 2
```
输出样例:
```
3 4
```
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。 输入格式: 输入在一行中给出序列中整数个数n(0<n≤1000),以及n个整数。数字间以空格分隔。 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
### 回答1:
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。输入格式为:在一行中给出序列中整数个数n(0<n≤1000),以及n个整数。数字间以空格分隔。输出格式为:在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。
### 回答2:
题目分析:
本题的主要思路是统计出整数序列中每个整数出现的次数,并找到出现次数最多的整数。
具体步骤如下:
1.读入整数序列的长度n和n个整数。
2.建立一个哈希表用于统计整数出现的次数。哈希表的键key为整数,值value为出现次数。
3.遍历整数序列,如果整数已经在哈希表中,则将其对应的值加1;否则,在哈希表中添加该整数,值初始化为1。
4.遍历完整个整数序列后,再遍历一遍哈希表,找到出现次数最多的整数。
5.输出出现次数最多的整数及其出现次数。
代码实现:
代码实现分为两部分,分别是建立哈希表和找到出现次数最多的整数。
1.建立哈希表
由于本题中整数序列中的整数可能非常大,直接使用整数作为哈希表的键可能会导致哈希表的空间超限。因此,我们需要将哈希表的键设计为字符串类型,将整数转换为字符串之后再存入哈希表中。
下面是哈希表的建立代码:
```
#define MAXN 1005
#define MAXM 40000
int n, A[MAXN];
unordered_map<string, int> hashTable;
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%d", &A[i]);
string key = to_string(A[i]);
if (hashTable.count(key) > 0)
hashTable[key]++;
else
hashTable[key] = 1;
}
return 0;
}
```
上面的代码先读入整数序列的长度n,然后用一个数组A保存整数序列。
在遍历整数序列的过程中,每读入一个整数i,则将其转换为字符串类型key,并在哈希表中查找是否存在该键。如果该键已经存在,则将其对应的值加1;否则,在哈希表中添加该键,并将其对应的值初始化为1。
2.找到出现次数最多的整数
在哈希表建立完成之后,我们需要找到出现次数最多的整数。
下面是代码实现:
```
int maxCount = 0;
int maxKey;
for (auto it = hashTable.begin(); it != hashTable.end(); it++)
{
if (it->second > maxCount)
{
maxCount = it->second;
maxKey = stoi(it->first);
}
}
printf("%d %d\n", maxKey, maxCount);
```
上面的代码用一个迭代器it遍历哈希表,找到出现次数最多的整数。
具体方法是,遍历哈希表中每个键值对,如果该键对应的值大于当前最大值maxCount,则将最大值maxCount更新为该键的值,并将其对应的键key保存为当前出现次数最多的整数maxKey。
最后,我们将出现次数最多的整数maxKey和其出现次数maxCount输出即可。
完整代码:
### 回答3:
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
思路:
我们可以使用一个哈希表来记录每个数字出现的次数,然后再遍历哈希表找到出现次数最多的数字即可。
具体来说,我们可以遍历输入序列,对于每个数字,都在哈希表中查找对应的计数器。如果哈希表中没有该数字的计数器,就新建一个。如果有计数器,则将其值加一。
然后我们再遍历一遍哈希表,找到计数器值最大的那个数字即可。
代码:
阅读全文