电话聊天狂人 (25 分)(map映射 简单做法)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。
输入格式:
输入首先给出正整数N(≤105 ),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。
输出格式:
在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。
输入样例:
4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832
13588625832 3
题目思路:
1.首先想到map映射,让对应的号码的个数作为second值,再考虑根据第二个值对map容器进行排序,这里需要注意,不能直接用sort函数进行排序,map是不能与sort匹配的。另外,map容器是对key值大小进行排序的,这题我们需要按照value的值的大小进行排序。
2.因此需要达到排序的目的,我们需要将map容器里的东西放到pair<key, value> 中,将pair<key, value> 作为vector的类型,此时就可以自定义mycmp函数,对当前的vector进行sort排序。如果看不懂就直接看代码,简单明了。
3.如果看不懂相关知识点,建议再学习一下相关的内容,因为这些东西是比较重要的。希望这篇文章能帮到你一些,有不懂的可以私信或者评论。
#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
map<string, int> mp; //一开始存放数据的map容器
vector<pair<string, int>> vec; //能够进行排序的vector容器,数据类型是pair<>
bool mycmp(pair<string, int>a, pair<string, int>b) { return a.second > b.second; };//自定义的比较函数
int main()
{int n, len;cin >> n;len = 2 * n;string s;for (int i = 0; i < len; i++) //第一步把数据存到map容器中{cin >> s;mp[s]++;} for (auto it = mp.begin(); it != mp.end(); it++) //第二步,把map容器里的内容放到vector<pair<sting, int>>中vec.push_back(pair<string, int>(it->first, it->second));sort(vec.begin(), vec.end(), mycmp); //排序int maxn = vec[0].second;int sum = 1;for (int i = 1; i < vec.size(); i++) //查找聊天狂人有几个{if (vec[i].second == maxn)sum++;elsebreak;}if (sum == 1) //按照题目要求输出即可cout << vec[0].first << " " << vec[0].second << endl;elsecout << vec[0].first << " " << vec[0].second << " " << sum << endl;return 0;
}
电话聊天狂人 (25 分)(map映射 简单做法)相关推荐
- 7-14 电话聊天狂人 (25 分)map做法 + 详解 + 思路分析
7-14 电话聊天狂人 (25 分)map做法 1:题目 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10 5 ),为通话记录条数.随后N行 ...
- 7-3 电话聊天狂人 (25 分)
暑假字符串专题HBU程序设计训练营总结 ?点这里 7-3 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105),为 ...
- 7-1 电话聊天狂人 (25分) PTA 数据结构
7-1 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10 5 ),为通话记录条数.随后N行,每行给出一条通话记录. ...
- 5-14 电话聊天狂人 (25分)
5-14 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105≤ 10^5),为通话记录条数.随后N行,每行给出一条通话 ...
- 5-14 电话聊天狂人 (25分)/PTA
5-14 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数NN(\le 10^5≤105),为通话记录条数.随后NN行,每 ...
- 11-散列1 电话聊天狂人 (25 分) (C语言)
浙大版<C语言程序设计实验与习题指导(第3版)>题目集 11-散列1 电话聊天狂人 (25 分) 二.题解 c代码 11-散列1 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出 ...
- 7-14 电话聊天狂人 (25分) 【map】
题目描述: 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和 ...
- 电话聊天狂人 (25 分)【简便解法】
立志用最少的代码做最高效的表达 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10^5),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这 ...
- 11-散列1 电话聊天狂人 (25 分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的 ...
- 7-14 电话聊天狂人 (25 分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105 ),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的1 ...
最新文章
- 一行代码解决对象数组排序(sort)
- 表单form类型数据转换为数组array
- mysql udf提权_MySQL日志安全分析技巧
- 判断是否获取到手机相机权限
- 牛客国庆集训派对day6TJ-DefenseTower【贪心】
- mysql 字符串取前缀_mysql截取字符串的函数总结
- Mysql库及表的基本概念、增删查改操作以及表的约束、多表联查
- 03:计算书费【一维数组】
- python课程开课吧怎么样-开课吧最新廖雪峰Python商业爬虫课程,全套完整课程资源下载...
- VMware Workstation12安装win 7企业版激活
- 广告化开发(基础知识)~广告效果指标CTR/CVR/ROI/ARPU的理解
- 语音信号处理的过程及其应用
- win7系统桌面计算机不见了,win7 64位旗舰版系统桌面上的计算机图标不见了
- 宏碁台式计算机u盘启动,Acer宏碁台式电脑怎么通过bios设置u盘启动
- edge里bing必应搜索不了解决办法
- C#命名规范(参考) (II)
- iTunes 12恢复.ipsw固件
- Linux构建一个deb软件安装包
- C++生日聚会(BFS)
- 12333提交显示服务器异常,掌上12333显示没有收到异地协助认证书什么原因_具体解决办法流程_3DM手游...
热门文章
- 程序员要么在变来变去中成长,要么在变来变去中被淘汰,要么主动去适应变来边去的事实...
- 第四季-专题8-LINUX系统调用
- 安装Cnario提示.Net 3.5安装错误, 检查Windows系统更新提示无法检查到更新, 安装.Net 3.5提示Windows无法完成请求的更改, 错误代码:0x800F081F...
- 隐式类型转换 与 隐式类型转换操作符
- linux之正则匹配命令学习笔记
- linux内存管理2:内存映射和需求分页(英文名字:demand Paging,又叫:缺页中断)【转】...
- 在Docker和Kubernetes上运行MongoDB微服务
- ASP.NET Razor - html中使用if else
- 解决升级PHP7后 微信公众号收不到消息
- Html5带来了什么?