yangzhixiaohuli 发表于 2023-11-3 10:57:58

求助一下

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

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

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

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

这题用C++怎么做

isdkz 发表于 2023-11-3 10:58:09

这个问题可以通过使用哈希表来解决。我们可以遍历整个整数序列,将每个整数作为键,出现次数作为值,存储在哈希表中。然后,我们可以找到出现次数最多的整数及其出现次数。

以下是用C++实现的代码:

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
    int N;
    cin >> N;

    unordered_map<int, int> freq;

    for (int i = 0; i < N; i++) {
      int num;
      cin >> num;
      freq++;
    }

    int maxNum = 0;
    int maxFreq = 0;

    for (auto it = freq.begin(); it != freq.end(); it++) {
      if (it->second > maxFreq) {
            maxNum = it->first;
            maxFreq = it->second;
      }
    }

    cout << maxNum << " " << maxFreq << endl;

    return 0;
}


首先,我们读取整数序列的长度N。然后,我们使用unordered_map来创建一个哈希表freq,用于存储每个整数的出现次数。

接下来,我们使用for循环遍历整数序列,并将每个整数的出现次数加1。

然后,我们使用另一个for循环遍历哈希表freq,找到出现次数最多的整数及其出现次数。我们通过比较当前键值对的值与maxFreq来更新maxNum和maxFreq。

最后,我们输出结果maxNum和maxFreq。

希望能帮到你!

Mike_python小 发表于 2023-11-3 10:59:11

题目分析:

本题要求统计一个整型序列中出现次数最多的整数及其出现次数,其中整数的个数和值均未知。由于输入的整数个数可变,我们可以考虑使用数组来存储这些整数,并通过循环遍历数组来进行统计。

具体做法如下:

1. 定义一个长度为1000的整数数组nums,用于存储输入的整数序列。
2. 从标准输入中读入输入的整数个数N,并使用循环将这些整数依次存入数组nums中。
3. 定义两个变量max_num和max_cnt,分别表示出现次数最多的整数和其出现次数。初始时,将max_cnt赋值为1,表示所有的整数至少出现了一次。
4. 使用循环遍历数组nums,对于每个整数,再次遍历整个数组,统计其出现次数。如果出现次数大于max_cnt,则更新max_num和max_cnt的值。
5. 输出出现次数最多的整数和其出现次数。

C++代码实现:

++
#include <iostream>
using namespace std;

int main() {
    const int MAXN = 1000;
    int nums;

    // 读入整数序列
    int N;
    cin >> N;
    for (int i = 0; i < N; i++) {
      cin >> nums;
    }

    // 统计出现次数最多的整数及其出现次数
    int max_num = nums, max_cnt = 1;
    for (int i = 0; i < N; i++) {
      int cnt = 1;
      for (int j = i + 1; j < N; j++) {
            if (nums == nums) {
                cnt++;
            }
      }
      if (cnt > max_cnt) {
            max_num = nums;
            max_cnt = cnt;
      }
    }

    // 输出结果
    cout << max_num << " " << max_cnt << endl;

    return 0;
}


算法分析:

本题的时间复杂度为$O(N^2)$,其中$N$为整数的个数。由于本题数据规模较小,因此该实现方式可以通过本题。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 求助一下