鱼C论坛

 找回密码
 立即注册
查看: 1709|回复: 2

[已解决]求助一下

[复制链接]
发表于 2023-11-2 23:41:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。

输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。

输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。

输入样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4

这题怎么做
最佳答案
2023-11-2 23:42:20
这个问题可以通过使用字典来解决。首先,我们将序列中的每个整数作为字典的键,并将其出现次数作为对应键的值。然后,我们可以遍历字典,找到出现次数最多的整数及其出现次数。

以下是解决这个问题的代码示例:

  1. # 输入序列
  2. sequence = input().split()[1:]

  3. # 创建一个空字典来存储整数及其出现次数
  4. count_dict = {}

  5. # 遍历序列,统计整数出现次数
  6. for num in sequence:
  7.     if num in count_dict:
  8.         count_dict[num] += 1
  9.     else:
  10.         count_dict[num] = 1

  11. # 找到出现次数最多的整数及其出现次数
  12. max_num = max(count_dict, key=count_dict.get)
  13. max_count = count_dict[max_num]

  14. # 输出结果
  15. print(max_num, max_count)
复制代码


这段代码首先通过 input().split()[1:] 获取输入序列,然后创建一个空字典 count_dict 来存储整数及其出现次数。接下来,我们遍历序列,如果整数已经存在于字典中,则将其对应的值加1;否则,将其作为新的键,并将值初始化为1。最后,我们使用 max() 函数和 key 参数来找到出现次数最多的整数,并将其对应的值作为出现次数。最后,我们打印出现次数最多的整数及其出现次数。

希望对你有帮助!如果有任何问题,请随时提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-2 23:42:20 | 显示全部楼层    本楼为最佳答案   
这个问题可以通过使用字典来解决。首先,我们将序列中的每个整数作为字典的键,并将其出现次数作为对应键的值。然后,我们可以遍历字典,找到出现次数最多的整数及其出现次数。

以下是解决这个问题的代码示例:

  1. # 输入序列
  2. sequence = input().split()[1:]

  3. # 创建一个空字典来存储整数及其出现次数
  4. count_dict = {}

  5. # 遍历序列,统计整数出现次数
  6. for num in sequence:
  7.     if num in count_dict:
  8.         count_dict[num] += 1
  9.     else:
  10.         count_dict[num] = 1

  11. # 找到出现次数最多的整数及其出现次数
  12. max_num = max(count_dict, key=count_dict.get)
  13. max_count = count_dict[max_num]

  14. # 输出结果
  15. print(max_num, max_count)
复制代码


这段代码首先通过 input().split()[1:] 获取输入序列,然后创建一个空字典 count_dict 来存储整数及其出现次数。接下来,我们遍历序列,如果整数已经存在于字典中,则将其对应的值加1;否则,将其作为新的键,并将值初始化为1。最后,我们使用 max() 函数和 key 参数来找到出现次数最多的整数,并将其对应的值作为出现次数。最后,我们打印出现次数最多的整数及其出现次数。

希望对你有帮助!如果有任何问题,请随时提问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-2 23:42:28 | 显示全部楼层
问题描述:

给定一个整型序列,要求统计出现次数最多的整数及其出现次数。

解决方法:

要解决这个问题,可以使用哈希表(unordered_map)来记录每个整数出现的次数。具体步骤如下:

1. 创建一个空的哈希表 freq,用于记录每个整数出现的次数。
2. 读取输入的整数个数 N
3. 循环读取 N 个整数,对于每个整数 num
   - 若 num 已经存在于哈希表中,则将对应的出现次数加一。
   - 若 num 不在哈希表中,则将其添加到哈希表中,并将出现次数初始化为 1。
4. 遍历哈希表,找到出现次数最多的整数及其出现次数:
   - 初始化变量 maxNummaxFreq,分别表示出现次数最多的整数和出现次数。
   - 遍历哈希表中的每个键值对 (num, freq)
     - 若 freq 大于 maxFreq,则将 maxNum 更新为当前整数 num,将 maxFreq 更新为当前出现次数 freq
5. 输出结果 maxNummaxFreq

下面是相应的代码实现:
  1. #include <iostream>
  2. #include <unordered_map>
  3. using namespace std;
  4. int main() {
  5.     int N;
  6.     cin >> N;
  7.    
  8.     unordered_map<int, int> freq;
  9.    
  10.     for (int i = 0; i < N; i++) {
  11.         int num;
  12.         cin >> num;
  13.         
  14.         if (freq.count(num) > 0) {
  15.             freq[num]++;
  16.         } else {
  17.             freq[num] = 1;
  18.         }
  19.     }
  20.    
  21.     int maxNum, maxFreq = 0;
  22.    
  23.     for (auto it = freq.begin(); it != freq.end(); it++) {
  24.         if (it->second > maxFreq) {
  25.             maxNum = it->first;
  26.             maxFreq = it->second;
  27.         }
  28.     }
  29.    
  30.     cout << maxNum << " " << maxFreq << endl;
  31.    
  32.     return 0;
  33. }
复制代码

希望这个解答对你有帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 01:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表