是一道字典树的简单应用,群里面组织的专题练习,又做了一遍,比较简单,属于字典树的入门题。。。。。。。。题目:

统计难题

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 7637    Accepted Submission(s): 2974

Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.

注意:本题只有一组测试数据,处理到文件结束.

Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
banana band bee absolute acm ba b band abc
Sample Output
2 3 1 0

ac代码:

#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
#include <malloc.h>
using namespace std;
struct Tire{int count;Tire *tire[26];
}*a;
void init(){a=(Tire *)malloc(sizeof(Tire));for(int i=0;i<26;++i)a->tire[i]=NULL;
}
void insert(char ch[]){int len=strlen(ch);Tire *head=a;for(int i=0;i<len;++i){int k=ch[i]-'a';if(head->tire[k]!=NULL){head=head->tire[k];head->count++;}else{head->tire[k]=new Tire;head=head->tire[k];head->count=1;for(int j=0;j<26;++j)head->tire[j]=NULL;}}
}
int find(char ch[]){int len=strlen(ch);Tire *head=a;int i,k;for(i=0;i<len;++i){k=ch[i]-'a';if(head->tire[k]==NULL){return 0;}else{head=head->tire[k];}}return head->count;
}
int main(){char s[10],ss[10];init();int len,num=0;while(gets(s)){len=strlen(s);if(len==0)break;insert(s);}while(gets(ss)){num=find(ss);printf("%d\n",num);}return 0;
}

转载于:https://www.cnblogs.com/javaspring/archive/2011/10/12/2656453.html

hdu 1251 字典树的简单应用相关推荐

  1. hdu 1251 字典树,指针版

    这题内存需求很大,我用静态数组写的trie总MLE,看discuss说50w的数组才过,但我一开50w的就MLE了啊--想不通 这是链表版的trie,1个case,所以也不用考虑内存释放什么的 #in ...

  2. HDU 1800(字典树)

    简单的字典树水题,统计为单词前缀的单词数,取最大,注意要去前0,具体原理还是自己想想吧,最大数决定了最大分组. 诶 PKU月赛之后 我发现我只会水的 .............. #include&l ...

  3. hdu 4099 字典树 + 斐波那契

    题意:       给你一个串(最长40位)问你这个串是斐波那契F(n)  n <= 99999中的那个数的前缀,如果存在多个输出最小的n否则输出-1. 思路:       给的串最长40位,那 ...

  4. hdu 1298 字典树 + DFS (模拟T9文本输入)

    题意:       给你一些按键顺序,让你输出每一步中概率最大的那个单词,这里的概率计算方 法好好看看别弄错了,一开始就是因为弄错了,各种wa,比如 abc 1 ,ab 1,那么 ab 的概率就是2 ...

  5. Prefix HDU - 5790 字典树 + 主席树

    传送门 文章目录 题意: 思路: 题意: 给你nnn个串,每次询问一个区间,返回这个区间的串的不同的前缀个数,强制在线. 思路: 碰到字符串前缀的问题,我们自然的想到用字典树来解决. 对于每个串,我们 ...

  6. HDU 5536 字典树

    题意:就是公式. 这现场赛O(n^3)能过,觉得太没天理了. 做法:字典树,枚举两个数,然后在字典树上贪心的跑. #include <bits/stdc++.h>using namespa ...

  7. HDU 5687 字典树入门

    Problem C Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  8. hdu 1247 字典树

    题意:给你一部分单词,让你找出所有这样的单词:a+b=c,就是一个单词,由另外两个单词串联而成 解题思路:先输入全部单词,构建一棵tire树,然后枚举所有单词,对单词进行查找,查找过程中经过的单词节点 ...

  9. HDU 1251(trie树)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others) Total Subm ...

  10. 字典树与双数组字典树总结

    字典树 字典树比较简单,本质是一个DFA(define finite automata. 具体可 关键词搜索leetcode trie tree 双向数组字典树 参考文献: http://www.do ...

最新文章

  1. 利用构造函数进行简化类初始化
  2. 14.grafana导入导出;Grafana的安装和Influxdb数据源配置
  3. ***K近邻Survey-Distance总结
  4. 自己用java实现飞鸽传书 2 - 实现文件传输
  5. 如何使用ITEXTSHARP将HTML代码字符串写进PDF
  6. 重读《JAVA与模式》之二
  7. OpenXml开发-向文档中添加样式
  8. 阿铭Linux_网站维护学习笔记201903029
  9. hadoop基础【Shuffle全部流程、OutputFormat输出、ReduceJoin案例实操】
  10. 人工智能 —— 归结演绎推理
  11. 热重启golang服务器(graceful restart golang http server)
  12. threejs-自定义着色器材质
  13. 为什么没有好用的Android游戏引擎?
  14. 多尺度动态图卷积神经网络----Multi-scale Dynamic Graph Convolutional Network for Hyperspectral Image Classificati
  15. Java 的 IDEA 神级插件!
  16. 谢国忠:下一场金融风暴将在6月左右开始
  17. 为Nextcloud中的视频文件配置缩略图
  18. PHPStudy后门事件分析
  19. EndNote文献悬挂缩进的设置方法及设置参考文献序号后面空格长度
  20. 预约活动(秒杀)项目中如何高效的保证下单交易成功?保证redis,mysql的最终一致性?

热门文章

  1. 2.4变动和最终变量(Volatile and Final Variables)
  2. 【渝粤教育】国家开放大学2018年春季 0239-21T电子商务物流管理 参考试题
  3. [渝粤教育] 中国地质大学 测量学 复习题 (2)
  4. 线性模型第1讲:最小二乘法
  5. 跨库访问-dblink
  6. Java对象toString()方法
  7. scrapy下载图片第一波
  8. [转]——软件开发人员如何成长
  9. STM32F407外部晶体改为25M后检测不到芯片的解决办法
  10. Elasticsearch分词导致的查找错误