问题描述

问题描述
  给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。

输入格式  
  输入首先给出正整数N(≤10​5​​),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。
输出格式
  在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。

输入样例

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例

13588625832 3

解题思路

本题为统计每个电话号码出现的次数,并且输出出现最多的那个号码和出现次数,如果这样的号码不唯一,输出一共有多少个并列。
一开始我使用了结构体,存储出现的号码和次数,在存储完毕后按照出现次数和号码字典序进行排序。那么第一个号码一定是要求输出的号码和次数,如果下一个的号码出现次数与这个相等,说明有并列,直到不相等时,输出并列个数。结构体计算容易导致超时,最后一个测试点没有通过。代码如下:

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct per
{string num;int count=0;
};
bool cmp(per a,per b)
{if(a.count!=b.count) return a.count>b.count;else return a.num<b.num;
}
int main()
{int n;cin>>n;string str1;vector<per> v;per no;int pp=1;for(int i=0;i<n;i++){  int c=2;while(c--){cin>>str1;bool flag=0;int j;for(j=0;j<v.size();j++)if(v[j].num==str1){v[j].count++;flag=1;}  if(flag==0) {no.num=str1;no.count=1;v.push_back(no);} }  }sort(v.begin(),v.end(),cmp);cout<<v[0].num<<" "<<v[0].count;for(int i=1;i<v.size();i++){if(v[i].count==v[i-1].count)pp++;else{  if(pp!=1) cout<<" "<<pp;break;}}return 0;
}

题目中的关键字为电话号码,值为出现次数。应该使用map计数。在输入号码的同时计算出出现最多次的次数,最后遍历map,因为map默认对key值进行从小到大的排序,因此第一个出现的value值为最大值的号码一定为题目要求的号码,并对最大值统计出现次数。

解题代码

#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{int n,mmax=0;cin>>n;string s;string maxs;map<string ,int> m;for(int i=0;i<2*n;i++){cin>>s;m[s]++;if(mmax<m[s])mmax=m[s];      }map<string,int> ::iterator it;int cnt=0;//map默认为key值从小到大排序 ,所以第一个最多电话的人就是号码最小的人 for(it=m.begin();it!=m.end();it++)if(it->second==mmax){cnt++;if(maxs=="")maxs=it->first; }      cout<<maxs<<" "<<mmax;if(cnt!=1) cout<<" "<<cnt;return 0;
}

PAT 7-14 电话聊天狂人相关推荐

  1. PAT 电话聊天狂人

    看到一个人的解题思路,学到了他的算时间的一种方法,特记录一下 11-散列1 电话聊天狂人   (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N( ...

  2. 7-14 电话聊天狂人 (25 分)map做法 + 详解 + 思路分析

    7-14 电话聊天狂人 (25 分)map做法 1:题目 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10 ​5 ​​ ),为通话记录条数.随后N行 ...

  3. 7-20 电话聊天狂人(25 分)(Hash模板)

    7-20 电话聊天狂人(25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10​5​​),为通话记录条数.随后N行,每行给出一条通话记录.简单 ...

  4. PTA 电话聊天狂人 思路分析及代码解析

    PTA 电话聊天狂人 思路分析及代码解析v1.0 一.前导 1. 需要掌握的知识 2. 题目信息 二.解题思路分析 1. 题意理解 1. 1 输入数据 1.2 输出数据 2. 思路分析 三.具体实现 ...

  5. 电话聊天狂人(java)

    7-14 电话聊天狂人(25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10​5​​),为通话记录条数.随后N行,每行给出一条通话记录.简单 ...

  6. (C语言详解)11-散列1 电话聊天狂人(小白实现详细解释)

    本博文源于浙江大学<数据结构>.电话聊天狂人是非常有趣的一道题.姥姥在小白专场里从main函数搭建.重要函数编写.模块的改变与裁剪非常仔细的说明,下面就给出详细指导: 博主在前篇博文已经将 ...

  7. 7-3 电话聊天狂人 (25 分)

    暑假字符串专题HBU程序设计训练营总结 ?点这里 7-3 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10​5​​),为 ...

  8. 7-1 电话聊天狂人 (25分) PTA 数据结构

    7-1 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10 ​5 ​​ ),为通话记录条数.随后N行,每行给出一条通话记录. ...

  9. 数据结构PTA 基础实验5-2.2 电话聊天狂人

    基础实验5-2.2 电话聊天狂人 题目 解法 题目 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10​5),为通话记录条数.随后N行,每行给出一条通 ...

  10. 5-20 电话聊天狂人

    5-20 电话聊天狂人   (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数NN(\le 10^5≤10​5​​),为通话记录条数.随后NN行,每 ...

最新文章

  1. 电信设备产品简介材料收集
  2. python培训班有用吗-比起自学Python,参加Python培训班有什么优势?
  3. linux(gentoo)安装配置conky
  4. ARC068C - Snuke Line
  5. java cpu 内存使用情况_java高cpu占用和高内存占用问题排查 (转)
  6. 为什么派生的子类报错不能实例化抽象类_一文搞懂抽象类和接口,从基础到面试题,揭秘其本质区别...
  7. 局域网访问提示无法访问检查拼写_关于海康视频监控异地访问设置一些细节的说明...
  8. C++ Primer Plus 读书笔记(第8、9章)
  9. 一起来学Masonry (一)
  10. CF 570D. Tree Requests [dsu on tree]
  11. android - Unable to add window -- token null is not for an application的解决方案
  12. 凸优化第八章几何问题 8.5 中心
  13. LightOJ 1419 – Necklace 用m个颜色去涂n个球(环状) 要求相邻可同色
  14. IDEA修改背景颜色大全(护眼绿等)
  15. 【历史上的今天】4 月 27 日:Tumblr 上线;施乐推出了 Star 工作站;第一台安德伍德打字机诞生
  16. 如何保护自己的颈椎?
  17. Qt多功能计算器(一)——基本功能
  18. 时间Date类型如何比较大小
  19. apikey、apisecret在api请求中的使用
  20. JAVA技术及其应用实验三(抽象类和匿名类)

热门文章

  1. 手机内存不够用,蒲公英X1让U盘秒变私有云
  2. 我是个Java开发者,我到底要不要学大数据开发?
  3. 【笛子的Spring5学习】AOP介绍
  4. JavaScript实现开关灯效果
  5. 汽车行业数字化工厂建设方案
  6. Android 字符串求值工具(科学计算)
  7. iOS内购提示无效ID : .paymentInvalid
  8. 怎样搭建serveru ftp个人服务器
  9. Powershell的字符串
  10. 抽象类、接口、内部类和枚举