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

输入格式:

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

输出格式:

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

输入样例:

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例:

13588625832 3
//2,3测试点未过
#include<iostream>
#include<map>
using namespace std;
const int maxn = 1000100;int main(){int n;//scanf("%d",&n);cin >> n;map<string,int> mp; string s1,s2;for(int i = 0; i < n; i++){cin >> s1 >> s2;++mp[s1];++mp[s2];}int cnt = 0;//通话最多次人数int time = -1;//通话最多次的时间string s;//通话最多次最小标号 map<string,int>::iterator it;for(it = mp.begin(); it != mp.end(); it++){if(it->second > time){cnt = 1;time = it->second;s = it->first;}else if(it->second == time){cnt++;if(s < it->first) s= it->first;}}cout << s << " " << time;if(cnt > 1) cout << " " << cnt << endl;return 0;
}

https://blog.csdn.net/xijujie/article/details/53224218

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 12typedef struct ListNode *Position;
typedef struct HTable *HashTable;
struct ListNode {char data[N];int count;Position next;
};
struct HTable {Position list;int size;
};
HashTable CreatTable(int n);
void Insert(HashTable H, char *key);
void Solve(HashTable H);
int NextPrime(int n);int main() {int i, n;char key[N];HashTable H;scanf("%d", &n);H = CreatTable(n * 2);for (i = 0; i < 2 * n; i++) {scanf("%s", key);Insert(H, key);}Solve(H);return 0;
}HashTable CreatTable(int n) {HashTable H;int i;H = (HashTable)malloc(sizeof(struct HTable));H->size = NextPrime(n);H->list = (Position)malloc(H->size*sizeof(struct ListNode));for (i = 0; i < H->size; i++) H->list[i].next = NULL;    return H;
}void Insert(HashTable H, char *key) {Position p, temp;int h;h = (atoi(key + 6)) % H->size;p = H->list[h].next;while (p && strcmp(p->data, key)) {p = p->next;}if (p) p->count++;else {temp = (Position)malloc(sizeof(struct ListNode));strcpy(temp->data, key);temp->count = 1;temp->next = H->list[h].next;H->list[h].next = temp;}
}void Solve(HashTable H) {int i, max = 0, num;char min[N];Position p;for (i = 0; i < H->size; i++) {p = H->list[i].next;while (p) {if (p->count > max) {max = p->count;strcpy(min, p->data);num = 1;}else if (p->count == max) {num++;if (strcmp(p->data, min) < 0)strcpy(min, p->data);}p = p->next;}}if(num == 1)printf("%s %d\n", min, max);elseprintf("%s %d %d\n", min, max, num);}int NextPrime(int n) {int i, j;n = (n % 2) ? n + 2 : n + 1;for (i = n;; i += 2) {for (j = 3; j*j <= i && i%j; j++);if (j*j > i) break;}return i;
}

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>#define MAXS 11
#define MAXD 5typedef struct HashEntry *List;
struct HashEntry{char PhoneNo[MAXS+1];int Cnt;List Next;
};struct HashTb1{int TableSize;List TheLists;
};
typedef struct HashTb1 *HashTable;int NextPrime(int N){int i;if(!(N%2))N++;for(;;N+=2){for(i=(int)sqrt(N);i>2;i--){if(!(N%i))break;}if(i==2)break;}return N;
}HashTable InitializeTable(int N){int i;HashTable H=(HashTable)malloc(sizeof(struct HashTb1));H->TableSize=NextPrime(N);H->TheLists=(List)malloc(sizeof(struct HashEntry)*H->TableSize);for(i=0;i<H->TableSize;i++){H->TheLists[i].Cnt=0;H->TheLists[i].Next=NULL;H->TheLists[i].PhoneNo[0]='\0';}return H;
}int Hash(int Key,int P){return Key%P;
}void InsertAndCount(char *Key,HashTable H){List Ptr,NewCell,L;L=&(H->TheLists[Hash(atoi(Key+6),H->TableSize)]);Ptr=L->Next;while(Ptr&&strcmp(Ptr->PhoneNo,Key)){Ptr=Ptr->Next;}if(Ptr){Ptr->Cnt++;    }else{NewCell=(List)malloc(sizeof(struct HashEntry));strcpy(NewCell->PhoneNo,Key);NewCell->Cnt=1;NewCell->Next=L->Next;L->Next=NewCell; }
}void Output(HashTable H){int i,MaxCnt,PCnt;List Ptr;char MinPhone[MAXS+1];MaxCnt=PCnt=0;MinPhone[0]='\0';for(i=0;i<H->TableSize;i++){Ptr=H->TheLists[i].Next;while(Ptr){if(Ptr->Cnt>MaxCnt){MaxCnt=Ptr->Cnt;strcpy(MinPhone,Ptr->PhoneNo);PCnt=1;}else if(Ptr->Cnt==MaxCnt){PCnt++;if(strcmp(MinPhone,Ptr->PhoneNo)>0){strcpy(MinPhone,Ptr->PhoneNo);}}Ptr=Ptr->Next;}}printf("%s %d",MinPhone,MaxCnt);if(PCnt>1){printf(" %d",PCnt);}
//    printf("\n");
}
int main(){int N,i;char Key[MAXS+1];HashTable H;scanf("%d",&N);H=InitializeTable(N);for(i=0;i<N;i++){scanf("%s",Key);InsertAndCount(Key,H);scanf("%s",Key);InsertAndCount(Key,H);}Output(H);
} 

这道题留着等九月份再看把

转载于:https://www.cnblogs.com/wanghao-boke/p/10946252.html

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

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

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

  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. 往往存储与计算机硬盘或其他,硬盘是计算机系统中信息资源最重要的存储设备其所存放信息-Read.DOC...
  2. PHP的学习--Traits新特性
  3. mysql5.7.20非安装版_mysql5.7.20\5.7.21免安装版安装配置教程
  4. distribution cleanup job2
  5. 关于Android Force Close 出现的原因 以及解决方法
  6. 2016 排行前20 的编程语言
  7. 外媒:美国做空机构浑水放弃做空特斯拉
  8. 第六课:GNN的可解释性
  9. 什么格式的照片可以是透明的
  10. Spring mvc框架 controller间跳转 ,重定向 ,传参
  11. Thrift 的原理和使用
  12. 两个集合的交集 java版本
  13. Unity - Windows获取屏幕分辨率、可用区域
  14. 中源幼儿园收费管理系统 v5.2.8 是什么
  15. oracle 整理表 碎片,Oracle数据库表空间碎片的查询和整理方法
  16. 21世纪最需要的七种人才
  17. linux 根目录变为只读了,Linux系统重启或无故变为只读造成网站无法正常访问的简单临时的做 根目录只读不能写处理:...
  18. “九型人格”-你的团队用了吗
  19. 关于.net的一则笑话(无奈一笑)
  20. DSP 中的基础算法和模型的详细解析

热门文章

  1. 下 面 这 条 语 句 一 共 创 建 了 多 少 个 对 象 : String s=a+b+c+d;
  2. [转]粵語固有辭彙與漢語北方話辭彙對照
  3. matlab批量修改txt内容_MATLAB作图实例:18:为饼图添加文本标签和百分比
  4. java 如何去掉http debug日志_你居然还去服务器上捞日志,搭个日志收集系统难道不香吗?...
  5. mysql update nowait_mysql innodb之select for update nowait
  6. 百米路由器2登陆地址_腾达无线路由器怎么安装,真的不错
  7. vscode python第三方库检测_VSCode中使用Pylint检查python代码
  8. java的使用Pair要导入什么包,第三方jar包的使用
  9. yield方法释放锁吗_死磕Synchronized底层实现重量级锁
  10. Win32路径操作相关API