5-14 电话聊天狂人 (25分)

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。
输入格式:

输入首先给出正整数N(≤105≤ 10^5​​),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。
输出格式:

在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。
输入样例:

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例:

13588625832 3

思路
需要注意这每一条数据都是11位电话号码,所以要么longlong,要么char[],后者要用字符串比较函数,总的来说可能比直接的数字比较效率要低些。

下面的代码是二叉方法实现。现在想来,这些数据应该可以用hash表存储,能够最快映射找到某一个电话号码是否存在并后续操作。
点击访问 PTA-测验

#include<stdlib.h>
#include<stdio.h>
/*时间              结果      得分  题目 编译器 用时(ms)内存(MB)用户
2016-03-16 20:17    部分正确      15    5-14  gcc   1           1  569985011
测试点      结果       得分/满分 用时(ms)内存(MB)
测试点1    答案正确      12/12    1         1
测试点2    答案正确       3/3     1         1
测试点3    答案正确      10/10     243          10
*/
typedef struct node *PNum;
struct node
{long long a;int times;PNum Left,Rignt;
};PNum Insert(PNum,long long);
void Print(PNum,long long*,int*,int*);
int main()
{int n;scanf("%d",&n);n*=2;long long phone;PNum P=NULL;for(int i=0; i<n; i++){scanf("%lld",&phone);P=Insert(P,phone);}int Times=0,Num;long long MinPhone;Print(P,&MinPhone,&Times,&Num);printf("%lld %d",MinPhone,Times);if(Num>1)printf(" %d",Num);return 0;
}
void Print(PNum N,long long *MinPhone,int* Times,int *Num)
{if(N){Print(N->Left,MinPhone,Times,Num);if(N->times>*Times){*MinPhone=N->a;*Num=1;*Times=N->times ;}else if(N->times ==*Times){++*Num;}Print(N->Rignt,MinPhone,Times,Num);}
}PNum Insert(PNum N,long long X)
{if(!N){PNum NewP=(PNum)malloc(sizeof(struct node));NewP->a=X;NewP->times =1;NewP->Left =NULL;NewP->Rignt =NULL;return NewP;}if(N->a>X){N->Left =Insert(N->Left ,X);}else if(N->a<X){N->Rignt =Insert(N->Rignt ,X);}else{++N->times;}return N;
}

5-14 电话聊天狂人 (25分)相关推荐

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

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

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

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

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

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

  4. 5-14 电话聊天狂人 (25分)/PTA

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

  5. 11-散列1 电话聊天狂人 (25 分) (C语言)

    浙大版<C语言程序设计实验与习题指导(第3版)>题目集 11-散列1 电话聊天狂人 (25 分) 二.题解 c代码 11-散列1 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出 ...

  6. 电话聊天狂人 (25 分)【简便解法】

    立志用最少的代码做最高效的表达 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10^5),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这 ...

  7. 11-散列1 电话聊天狂人 (25 分)

    给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的 ...

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

    给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10​5​​ ),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的1 ...

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

    给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10^​5​),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11 ...

最新文章

  1. 高精地图:为自动驾驶汽车提供动力的新时代地图
  2. Java中的中介器设计模式
  3. PetShop的系统架构设计[转]
  4. Android 渗透测试学习手册 第五章 Android 取证
  5. hdu1247 Hat’s Words 字符串模拟
  6. wampserver修改默认根目录
  7. 海康摄像头GB28181对接
  8. cad字体渐变_CAD制造特效字体
  9. 泰坦尼克号幸存者预测所用函数
  10. 信号采样与sinc插值恢复MATLAB
  11. python实现简单舒尔方格
  12. 利用matplotlib制作饼图
  13. Java使用对象使用属性过滤集合对象重复数据
  14. 安卓日志:拍照、文件读取的问题
  15. Android工具类blankj
  16. 【C++系列】引用与临时变量
  17. 数据挖掘课程笔记--分类(4)朴素贝叶斯
  18. 腿姐22考研政治马原选择题技巧精讲
  19. hexo添加disqus_使用Disqus将传统评论添加到Tumblr博客
  20. python图形库哪个好_Python下的图像处理库,你要选哪个?

热门文章

  1. python的continue用法_Python continue的用法详解
  2. 个人服务器制作教程,个人网站反代服务器架设教程
  3. 在C语言程序中 main函数的位置,在C语言程序中,main函数的位置是________。
  4. JavaScript 编程题
  5. Android一键加QQ群
  6. JJY本地服务器以服务方式运行不能读取消息文件
  7. 20191005 (16)金融学课笔记(得到北大经融学课)——复利加速思维
  8. 仿慕课网Android端app——慕课Ime(自写服务器接口)
  9. 微信小程序与MCU基于阿里云MQTT协议通信
  10. 服务器锁定文件,BEA-141297 - 无法获取服务器文件锁定(BEA-141297 - Could not get the server file lock)...