码迷,mamicode.com
首页 > 其他好文 > 详细

nyoj 95-众数问题 (map)

时间:2018-07-16 23:09:43      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:set   clu   ++   mes   its   大于   clear   通过   -o   

95-众数问题


内存限制:64MB 时间限制:3000ms 特判: No
通过数:16 提交数:29 难度: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

C/C++ AC:
 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <set>
 8 #include <map>
 9 #include <queue>
10 #include <climits>
11 
12 using namespace std;
13 int n, m;
14 
15 int main()
16 {
17     cin >>n;
18     while (n --)
19     {
20         int a, b = 0, temp;
21         map <int, int> my_map;
22         pair <map<int, int> :: iterator, bool> pr;
23         scanf("%d", &m);
24         while (m --)
25         {
26             cin >> temp;
27             pr = my_map.insert(pair<int, int>(temp, 1)); // 注意map插入,pair<int, int>(temp, 1);
28             if (!pr.second)
29             {
30                 my_map[temp] ++;
31                 if (b < my_map[temp])
32                 {
33                     a = temp;
34                     b = my_map[temp];
35                 }
36             }
37         }
38         printf("%d %d\n", a, b);
39     }
40 }

 

nyoj 95-众数问题 (map)

标签:set   clu   ++   mes   its   大于   clear   通过   -o   

原文地址:https://www.cnblogs.com/GetcharZp/p/9320695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!