`
Simone_chou
  • 浏览: 192776 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

众数问题(Map 按 value 排序)

    博客分类:
  • NYOJ
 
阅读更多

众数问题

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
 
描述

所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数,

多重集合S重的重数最大的元素成为众数。例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。

现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。

 
输入
第一行为n,表示测试数据组数。(n<30)
每组测试的第一行是一个整数m,表示多重集S中元素的个数为m
接下来的一行中给出m(m<100)个不大于10万的自然数
(不会出现不同元素出现的次数相同的情况,如:S={11,11,22,22,33,33})。
输出
每组测试数据输出一行,包含两个数,第一个是众数,第二个是其重数,中间以空格隔开。
样例输入
1
6
1 2 2 2 3 5
样例输出
2 3

 

     思路:

     运用 Map,后对 value 由大到小排序。max_element()函数的应用。

 

     AC:

#include <cstdio>
#include <algorithm>
#include <map>

using namespace std;

bool cmp(const pair<int, int>& p1, const pair<int, int>& p2) {
        return p1.second < p2.second;
}

int main () {
        int t;
        scanf("%d", &t);
        while (t--) {
                map<int, int> m;
                int n;
                scanf("%d", &n);
                for (int i = 0; i < n; ++i) {
                        int ans;
                        scanf("%d", &ans);
                        m[ans]++;
                }

                int num, sum = 0;
                map<int, int>::iterator it = max_element(m.begin(), m.end(), cmp);

                printf("%d %d\n", it -> first, it -> second);
        }
        return 0;
}

 

 

分享到:
评论

相关推荐

    众数问题 算法分析与设计

    总的来说,众数问题的解决涉及了基本的数据结构(如数组、哈希表、堆)、排序算法和优化策略,它是算法分析与设计中的一个重要课题。理解并熟练掌握这些方法对于提升编程能力和解决实际问题大有裨益。

    c++分治法求解众数问题

    **C++ 分治法求解众数问题** 在计算机科学中,分治法是一种重要的算法设计策略,它将一个大问题分解为多个小问题来解决,然后再将小问题的解组合起来得到原问题的解。在本场景中,我们要用C++通过分治法来解决众数...

    VC分治算法解众数问题

    用分治法求解众数问题,里头用到了快速排序算法

    寻找众数代码(快速排序)

    给定n个元素的多重集合S。每个元素在S中出现的次数称为该元素的重数。S中重数。最大的元素称为众数。(联系后面的主元素)

    算法作业-众数 动态规划 最近点对 排序

    本压缩包文件包含了一些重要的算法主题,包括“众数”、“动态规划”、“最近点对”和“排序”。接下来,我们将深入探讨这些算法及其应用。 1. **众数**:众数是指在一个数据集中出现次数最多的数值。如果数据集中...

    众数问题---算法与数据结构.pdf

    在计算机科学和算法设计中,"众数问题"是一个经典的计数问题,它涉及到寻找一组数据中出现次数最多的元素。众数在统计学中扮演着重要角色,特别是在数据分析和数据挖掘领域。这个问题的描述如下: **问题描述:** ...

    众数问题c实现

    集S 中重数最大的元素称为众数。 例如,S={1,2,2,2,3,5}。 多重集S 的众数是2,其重数为3。 编程任务: 对于给定的由n 个自然数组成的多重集S,编程计算S 的众数及其重数。 输入格式 输入的第1 行多重集S 中...

    1854167-徐思琪-众数问题_众数问题_

    《众数问题——算法解析与实现》 在计算机科学领域,众数问题是一个常见的数据处理问题,它涉及到寻找一组数据中出现次数最多的元素。众数并非总是存在的,但当存在时,它对于数据分析和决策支持具有重要意义。在这...

    基于C++解决众数问题(源码+剖析)

    通过以上代码,我们实现了一个简单的解决众数问题的函数 mode,并在 main 函数中进行了测试。该算法的时间复杂度为O(n),其中n是输入数组的大小。通过使用哈希表记录每个数的频次,我们可以高效地找出众数。

    算法实验报告--众数问题

    给定含有n个元素的多重集合S,每...多重数集S中的重数最大的元素称为众数。  例如, S={1,2,2,2,3,5}。  多重集S得众数是2,其重数为3。  算法设计:  对于给定的由n个自然数组成多重数集S,计算S的众数及其重数。

    众数问题的C语言

    给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。

    算法----众数问题

    - **问题描述**:给定一个包含 n 个自然数的多重集 S,要求编写程序来找出 S 的众数及其重数。 - **输入格式**: - 第一行包含一个整数 n,表示多重集 S 中元素的数量。 - 接下来的 n 行,每行包含一个自然数,...

    使用分治法解决众数问题

    这个程序使用分治法算法思想,求得一组数中的众数,众数的重数。

    采用文件流形式输入输出众数问题

    课堂作业:采用文件流形式输入输出解决众数问题。

    分治法求众数.doc

    在求解众数的问题上,首先考虑的是数组无序的情况。无序数组不能直接使用折半查找,因为我们需要考虑所有可能的众数,而不仅仅是位于中间的元素。但是,可以借鉴快速排序(Quick Sort)的思想,快速排序通过选取一个...

    分治法之众数求解问题

    "分治法之众数求解问题" 概述:该资源是关于算法设计的文档,附带了代码,主要介绍了如何使用分治法来解决众数问题。 一、分治法简介 分治法是一种常用的算法设计策略,通过将原问题分解为若干个规模较小的子问题...

    众数问题详解0.zip

    总的来说,众数问题的解决方案取决于具体的应用场景,包括数据规模、是否已排序、可用资源等。正确选择和实现合适的算法可以大大提高处理效率,尤其在处理海量数据时。通过深入理解和实践这些方法,可以更好地应对...

    3众数问题详解.zip

    在IT领域,众数问题是一个常见的数据处理与分析任务,特别是在统计学和计算机科学中。众数是指在一组数据中出现次数最多的数值,它不一定是唯一的,也可能不存在。众数问题通常涉及到查找一个数据集中的主要趋势或者...

    众数问题.docx

    ### 众数问题知识点解析 #### 一、问题定义与理解 **众数问题**主要研究的是在一个给定的多重集合\( S \)中找出出现次数最多的元素(众数)及其出现的次数(重数)。这里提到的多重集合是指一个元素可以重复出现多...

    众数问题详解1.zip

    解决众数问题有多种方法,其中最常用的是计数法和排序法。 1. 计数法:这种方法通过遍历数据集,用哈希表(在Python中可以使用字典)记录每个元素出现的次数。在遍历结束后,找出出现次数最多的元素即可。这种方法...

Global site tag (gtag.js) - Google Analytics