浙大版《C语言程序设计实验与习题指导(第3版)》题目集

  • 11-散列1 电话聊天狂人 (25 分)
  • 二、题解
  • c代码

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

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

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

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

输入样例1:

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例1:

13588625832 3

二、题解

c代码

#include <stdio.h>
#define N 200010       //数组开大一点
#define mod 200003     //比最大数据量大的最小的素数
typedef long long ll;  //电话号码用long long可以存的下struct hash {     //哈希表ll tel;       //存电话号码    int cnt;      //统计号码出现几次
}num[N];int n;void Insert(ll a) {      //哈希表插入函数,用的是线性探测int temp, flag;if(!num[a % mod].cnt) {    //当前位置没有被占用,直接用num[a % mod].cnt++;num[a % mod].tel = a;} else if(num[a % mod].cnt && num[a % mod].tel == a) {  //占了,看看是不是和当前号码一样num[a % mod].cnt++;      //一样次数加加} else if(num[a % mod].cnt && num[a % mod].tel != a) {  //占了,和当前号码不一样flag = 1;    //标志号码是否出现过temp = a % mod;    while(num[temp].cnt) {   //找空位,或者看看后面是不是有这个号码if(num[temp].tel == a) {    //出现过,次数加加flag = 0;    //标志出现过num[temp].cnt++;    break;}temp = (temp + 1) % mod;   //找下一个位置,取模,防止最大N时,加过头了,超出数组大小}if(flag) {  //没找到,找到了空位,把元素填进去num[temp].cnt++;num[temp].tel = a;}}
}int main() {scanf("%d", &n);ll a, b, cnt = 0;while(n--) {scanf("%lld%lld", &a, &b);   Insert(a);    //插入电话号码Insert(b);    }int ans = 0;      //记录出现最多次电话号码的次数ll tel = 1e13;    //记录出现最多次的最小的电话号码,先置成一个比较大的数for (int i = 0; i <= mod; i++) {if(num[i].cnt && num[i].cnt > ans) {    //当前号码出现次数比记录的大ans = num[i].cnt;    tel = num[i].tel;} else if(num[i].cnt && num[i].cnt == ans) {   //当前号码出现次数等于记录的if(num[i].tel < tel)     //比较电话号码大小,换成小的tel = num[i].tel;}}int max = 0;for (int i = 0; i <= mod; i++)     //统计最大次数并列的数量if(num[i].cnt == ans)  max++;if(max > 1)printf("%lld %d %d\n", tel, ans, max);  elseprintf("%lld %d\n", tel, ans);return 0;
}

11-散列1 电话聊天狂人 (25 分) (C语言)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 算法 散列1 电话聊天狂人

    全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案 题目:给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人. 输入格式: 输入首先给出正整数N(≤10​5​​), ...

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

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

最新文章

  1. cookies池和proxy池
  2. python 报错 AttributeError: type object ‘datetime.datetime‘ has no attribute ‘datetime‘
  3. 080929 气温骤降
  4. priority_queue优先队列的用法总结
  5. JVM笔记(JVM内存+垃圾回收器)详解
  6. mysql typeindex_explain mysql的type字段,索引的类型
  7. 用户思维模型,围绕用户核心四大模块,拉新、养熟、成交、裂变循环的效果...
  8. linux远程windows执行cmd,Linux服务器远程连接window服务器并执行cmd命令
  9. C/C++ select fd_set解释
  10. php 日期format不要零_PHP格式化日期用法代码,包括前导零示例
  11. Python加权图的邻接表邻接矩阵之转换
  12. 如何使用iMazing为iPad创建配置文件
  13. TransE代码实践(很详细)
  14. Android 最常用的设计模式六 安卓源码分析—责任链模式
  15. 【26】Superscalar和VLIW:如何让CPU的吞吐率超过1?
  16. Vant_根据已有地址获取code
  17. 2010提升你幽默感的经典短句!
  18. Tromino谜题java_Tromino谜题
  19. 用python爬取考研词汇及其近反义词与例句
  20. 网易云音乐移动端项目实战(分解下)

热门文章

  1. 天天生鲜项目——用户信息页
  2. 【常规篇】浏览器被其他网页恶意篡改主页解决办法
  3. C#开发Windows Service程序
  4. 清除网页缓存HTML方法
  5. 3D医学图像CT dcm格式转换为png
  6. 对c语言编程的感受,感受一种被“C语言编程”困惑的书(Stephen Kochan)
  7. 099 复习:中值定理习题之型二:有ξ,有a,b ,型三: 有ξ,η
  8. python批量处理PDF文档,输出自定义关键词的出现次数
  9. Luogu P3014 [USACO11FEB]牛线Cow Line
  10. leetcode 974