PTA数据结构与算法题目集(中文) 7-14
PTA数据结构与算法题目集(中文) 7-14
给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。
输入格式:
输入首先给出正整数N(≤),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。
输出格式:
在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。
输入样例:
4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832
输出样例:
13588625832 3(7-12 是简单的桶排序应用 7-13是排序的应用 至于排序在另一篇博客里写到了)
题目分析:一道利用散列表(哈希表)的基础题 将数据读入后进行判断就可以了 需要注意要记录所有狂人的人数 那么在找到最新的那个狂人时候 将人数设为1 之后找到与他次数相同的认识 将人数加1
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<math.h>
#include<string.h>
#define KEYLENGTH 11
#define MAXTABLESIZE 10000 typedef char ElementType[KEYLENGTH + ];
typedef struct LNode* PtrToLNode;
typedef PtrToLNode List;
struct LNode
{
ElementType Data;
PtrToLNode Next;
int TelTimes;
}; typedef struct HblNode* HashTable;
struct HblNode
{
int TableSize;
List Heads;
}; long Atoi(ElementType Tel)
{
long num = ;
int length = strlen(Tel);
for (int i = ; i < length; i++)
num += num * + Tel[i] - '';
return num;
} int NextPrime(int num)
{
int p = (num % ) ? num + : num + ;
int i;
while (p<MAXTABLESIZE)
{
for (i = (int)sqrt(p); i > ; i--)
if (p % i == )
break;
if (i == )
break;
else
p += ;
}
return p;
} int Hash(ElementType Tel,int TabelSize)
{
return atoi(Tel+) % TabelSize;
} HashTable BuildHashTable(int TabelSize)
{
HashTable H = (HashTable)malloc(sizeof(struct HblNode));
H->TableSize = NextPrime(TabelSize);
H->Heads = (List)malloc(H->TableSize * sizeof(struct LNode));
for (int i = ; i < H->TableSize; i++)
{
H->Heads[i].Data[] = '\0';
H->Heads[i].Next = NULL;
}
return H;
} PtrToLNode Find(ElementType Tel, HashTable H)
{
int i = Hash(Tel,H->TableSize);
PtrToLNode P = H->Heads[i].Next;
while (P && strcmp(P->Data, Tel))
P = P->Next;
return P;
} void Insert(ElementType Tel, HashTable H)
{
PtrToLNode P, NewCell;
P = Find(Tel, H);
if (!P)
{
int i = Hash(Tel, H->TableSize);
NewCell = (PtrToLNode)malloc(sizeof(struct LNode));
strcpy(NewCell->Data, Tel);
NewCell->TelTimes = ;
NewCell->Next = H->Heads[i].Next;
H->Heads[i].Next = NewCell;
}
else
P->TelTimes++;
} HashTable CreateHashTable()
{
int N;
scanf("%d", &N);
HashTable H = BuildHashTable(N);
N *= ;
while (N--)
{
ElementType Tel;
scanf("%s", Tel);
Insert(Tel, H);
}
return H;
}
void Judge(HashTable H)
{
int TelTimes = -;
PtrToLNode MinP=NULL;
PtrToLNode P=NULL;
int Persons = ;
for (int i = ; i < H->TableSize; i++)
{
P = H->Heads[i].Next;
while (P)
{
if (P->TelTimes > TelTimes)
{
Persons = ;
MinP = P;
TelTimes = P->TelTimes;
}
else if (P->TelTimes == TelTimes)
Persons++;
P = P->Next;
}
}
if(Persons==)
printf("%s %d", MinP->Data,MinP->TelTimes);
else
printf("%s %d %d", MinP->Data, MinP->TelTimes,Persons);
} int main()
{
HashTable H = CreateHashTable();
Judge(H);
return ;
}
PTA数据结构与算法题目集(中文) 7-14的更多相关文章
- PTA数据结构与算法题目集(中文) 7-43字符串关键字的散列映射 (25 分)
PTA数据结构与算法题目集(中文) 7-43字符串关键字的散列映射 (25 分) 7-43 字符串关键字的散列映射 (25 分) 给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义 ...
- PTA数据结构与算法题目集(中文) 7-42整型关键字的散列映射 (25 分)
PTA数据结构与算法题目集(中文) 7-42整型关键字的散列映射 (25 分) 7-42 整型关键字的散列映射 (25 分) 给定一系列整型关键字和素数P,用除留余数法定义的散列函数将关键字映射 ...
- PTA数据结构与算法题目集(中文) 7-41PAT排名汇总 (25 分)
PTA数据结构与算法题目集(中文) 7-41PAT排名汇总 (25 分) 7-41 PAT排名汇总 (25 分) 计算机程序设计能力考试(Programming Ability Test,简称P ...
- PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分)
PTA数据结构与算法题目集(中文) 7-40奥运排行榜 (25 分) 7-40 奥运排行榜 (25 分) 每年奥运会各大媒体都会公布一个排行榜,但是细心的读者发现,不同国家的排行榜略有不同.比如 ...
- PTA数据结构与算法题目集(中文) 7-39魔法优惠券 (25 分)
PTA数据结构与算法题目集(中文) 7-39魔法优惠券 (25 分) 7-39 魔法优惠券 (25 分) 在火星上有个魔法商店,提供魔法优惠券.每个优惠劵上印有一个整数面值K,表示若你在购买某商 ...
- PTA数据结构与算法题目集(中文) 7-38寻找大富翁 (25 分)
PTA数据结构与算法题目集(中文) 7-38寻找大富翁 (25 分) 7-38 寻找大富翁 (25 分) 胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人.假 ...
- PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分)
PTA数据结构与算法题目集(中文) 7-37 模拟EXCEL排序 (25 分) 7-37 模拟EXCEL排序 (25 分) Excel可以对一组纪录按任意指定列排序.现请编写程序实现类似功能. ...
- PTA数据结构与算法题目集(中文) 7-36 社交网络图中结点的“重要性”计算 (30 分)
PTA数据结构与算法题目集(中文) 7-36 社交网络图中结点的“重要性”计算 (30 分) 7-36 社交网络图中结点的“重要性”计算 (30 分) 在社交网络中,个人或单位(结点)之间通过某 ...
- PTA数据结构与算法题目集(中文) 7-35 城市间紧急救援 (25 分)
PTA数据结构与算法题目集(中文) 7-35 城市间紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市 ...
- PTA数据结构与算法题目集(中文) 7-34
PTA数据结构与算法题目集(中文) 7-34 7-34 任务调度的合理性 (25 分) 假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行.“ ...
随机推荐
- AppBoxFuture实战: 如何同步开发与生产环境的模型
框架是用抽象模型驱动的方式来生成应用系统的,这样可以将这些模型序列化为相应的模型包文件,通过反序列化导入至其他部署环境内,从而实现开发环境与生产环境的同步,包括对应的数据库结构的同步.下面通过示例 ...
- html5 拖放购物车
1.本例中模仿了购物车添加的功能 主要运用了ondragstart / ondragover/ ondrag 功能 功能比较简单 遗留问题:火狐下图片拖进会被打开 <!doctype html& ...
- mongo密码的设置
MongoDB 版本 v4.0.7 系统 Win10 注意: 要为数据库创建用户,必须先切换到相应的数据库: 要为数据库创建用户,必须先切换到相应的数据库: 要为数据库创建用户,必须先切换到相应的数据 ...
- YAML中多行字符串的配置方法
有时候我们会在配置文件中配置一段文字说明,这种时候通常会出现两种需求: 文字中可能出现段落,希望在配置中按段落方式编写,显示打印的时候也能出现段落换行. 文字很长,为方便编辑,可能在配置文件中分段写, ...
- javaScript 基础知识汇总(七)
1.数组 特点:数组是可以存储有序集合的对象. 声明: let arr = new Array(); let arr=[]; 大多数情况下我们使用第二种. let fruits = [" ...
- 适用于 macOS 下 2K 显示器开启 HiDPI 的简便解决方案
前阵子入手了一款2k的显示器用于mbp的拓展屏幕,但由于苹果系统的严格限制,只有在4K及以上显示器上才能开启自带的HiDPI进行缩放以达到retina显示屏的效果.2k显示器下的字体会偏小发虚,使用1 ...
- Requests发Post请求data里面嵌套字典
一.Post请求,data里面嵌套字典 Requests发Post请求,data里面嵌套字典的常见形式如下: info = { "appid": "123", ...
- Java-正则表达式(新手)
/* 正则表达式也是一个字符串,用来定义匹配规则,在Pattern类中有简单的规则定义.可以结合字符串类的方法使用. *///创建的一个类.public class LianxiFF1 { //公共静 ...
- 安卓侧滑菜单及MenuPopup 的功能实现
- 各种WAF绕过手法学习
原文:https://mp.weixin.qq.com/s/aeRi1lRnKcs_N2JLcZZ0Gg 0X00 Fuzz/爆破 fuzz字典 1.Seclists/Fuzzing https ...