5-14 电话聊天狂人 (25分)
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分)相关推荐
- 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分)/PTA
5-14 电话聊天狂人 (25分) 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数NN(\le 10^5≤105),为通话记录条数.随后NN行,每 ...
- 11-散列1 电话聊天狂人 (25 分) (C语言)
浙大版<C语言程序设计实验与习题指导(第3版)>题目集 11-散列1 电话聊天狂人 (25 分) 二.题解 c代码 11-散列1 电话聊天狂人 (25 分) 给定大量手机用户通话记录,找出 ...
- 电话聊天狂人 (25 分)【简便解法】
立志用最少的代码做最高效的表达 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10^5),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这 ...
- 11-散列1 电话聊天狂人 (25 分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的 ...
- 7-14 电话聊天狂人 (25 分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤105 ),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的1 ...
- 7-14 电话聊天狂人 (25分)
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10^5),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11 ...
最新文章
- 高精地图:为自动驾驶汽车提供动力的新时代地图
- Java中的中介器设计模式
- PetShop的系统架构设计[转]
- Android 渗透测试学习手册 第五章 Android 取证
- hdu1247 Hat’s Words 字符串模拟
- wampserver修改默认根目录
- 海康摄像头GB28181对接
- cad字体渐变_CAD制造特效字体
- 泰坦尼克号幸存者预测所用函数
- 信号采样与sinc插值恢复MATLAB
- python实现简单舒尔方格
- 利用matplotlib制作饼图
- Java使用对象使用属性过滤集合对象重复数据
- 安卓日志:拍照、文件读取的问题
- Android工具类blankj
- 【C++系列】引用与临时变量
- 数据挖掘课程笔记--分类(4)朴素贝叶斯
- 腿姐22考研政治马原选择题技巧精讲
- hexo添加disqus_使用Disqus将传统评论添加到Tumblr博客
- python图形库哪个好_Python下的图像处理库,你要选哪个?
热门文章
- python的continue用法_Python continue的用法详解
- 个人服务器制作教程,个人网站反代服务器架设教程
- 在C语言程序中 main函数的位置,在C语言程序中,main函数的位置是________。
- JavaScript 编程题
- Android一键加QQ群
- JJY本地服务器以服务方式运行不能读取消息文件
- 20191005 (16)金融学课笔记(得到北大经融学课)——复利加速思维
- 仿慕课网Android端app——慕课Ime(自写服务器接口)
- 微信小程序与MCU基于阿里云MQTT协议通信
- 服务器锁定文件,BEA-141297 - 无法获取服务器文件锁定(BEA-141297 - Could not get the server file lock)...