博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACM:统计难题 解题报告-字典树(Trie树)
阅读量:4567 次
发布时间:2019-06-08

本文共 1632 字,大约阅读时间需要 5 分钟。

统计难题
Time Limit:2000MS     Memory Limit:65535KB     64bit IO Format:%I64d & %I64u
Submit 

Description

Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). 
 

Input

输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串. 
注意:本题只有一组测试数据,处理到文件结束. 
 

Output

对于每个提问,给出以该字符串为前缀的单词的数量. 
 

Sample Input

banana band bee absolute acm ba b band abc
 

Sample Output

2 3 1 0
 
写的第一个字典树,用动态分配内存来写的,一开始用G++交了2发都是爆内存,找了半天的问题没找出来,百度了下,发现是G++在动态分配内存的时候会给指针也分配一个相同大小的内存(申请这么多次不爆掉才怪。。。。
后来用C++交了一发,AC了。
好像还能用其他的方法做这个题目,这个以后再补充。
 
#include"iostream"#include"algorithm"#include"cstdio"#include"cstring"#define MX 110000#define INF 0x3f3f3f3f#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;struct Trie {	int v;//v每个字母的次数;	Trie *next[26];} root;void BuildTrie(char *s) {	int len=strlen(s);	Trie *p=&root,*q;	for(int i=0; i
next[num]==NULL) { q=(Trie *)malloc(sizeof(root));//申请一块新内存; //动态分配内存 q->v=1; for(int j=0; j<26; j++) { q->next[j]=NULL; //清空申请内存的所有子节点 } p->next[num]=q; //往子节点下去继续记录字典树 p=p->next[num]; } else { p=p->next[num]; p->v++; //如果到达此处的字典树已经存在,数加一 } }}int Query(char *s) { int len=strlen(s); Trie *p=&root; for(int i=0; i
next[num]==NULL) { return 0; }//如果后面一个节点是空的,则说明这个字符串不存在字典树中 else p=p->next[num]; //否则继续往下查询 } int v=p->v; return v; //如果查询结束,返回这个字符串出现过的次数}int main() { char s[15]; for(int i=0; i<26; i++) root.next[i]=NULL; while(gets(s)&&s[0]!='\0') { BuildTrie(s); } while(~scanf("%s",s)) { printf("%d\n",Query(s)); } return 0;}

  

转载于:https://www.cnblogs.com/HDMaxfun/p/5697596.html

你可能感兴趣的文章
JavaScript 字符串(String) 对象
查看>>
How to use VisualSVN Server and TortoiseSVN to host your codes and control your codes' version
查看>>
微信小程序picker组件 - 省市二级联动
查看>>
Dynamics CRM 给视图配置安全角色
查看>>
Eclipse修改已存在的SVN地址
查看>>
(转)使用 python Matplotlib 库绘图
查看>>
进程/线程切换原则
查看>>
20165301 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Vue的简单入门
查看>>
urllib 中的异常处理
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
20181227 新的目标
查看>>
androidtab
查看>>
php 事件驱动 消息机制 共享内存
查看>>
剑指offer 二叉树的bfs
查看>>
LeetCode Maximum Subarray
查看>>
让我们再聊聊浏览器资源加载优化
查看>>
underscore demo
查看>>
CSS hack
查看>>
每日一小练——数值自乘递归解
查看>>