hihoCoder 1014

题目提示已经很清楚了~

贴代码……

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6. const int MAXN = + ;
  7. const int alNum = ;
  8. struct Node{
  9. int cnt;
  10. int next[alNum];
  11. void init(){
  12. memset(next,-,sizeof(next));
  13. cnt = ;
  14. return;
  15. }
  16. };
  17. Node trie[MAXN];
  18. int tt;
  19. void build_trie(char str[]){
  20. int len = strlen(str);
  21. int p = ;
  22. for(int i = ;i < len;i++){
  23. int ch = str[i] - 'a';
  24. if(trie[p].next[ch] == -){
  25. trie[tt].init();
  26. trie[p].next[ch] = tt++;
  27. }
  28. p = trie[p].next[ch];
  29. trie[p].cnt++;
  30. }
  31. }
  32. int quercy(char str[]){
  33. int len = strlen(str);
  34. int p = ;
  35. for(int i = ;i < len;i++){
  36. int ch = str[i] - 'a';
  37. if(trie[p].next[ch] == -){
  38. return ;
  39. }
  40. p = trie[p].next[ch];
  41. }
  42. return trie[p].cnt;
  43. }
  44. int main(){
  45. // freopen("input.txt","r",stdin);
  46. int n,m;
  47. while(~scanf("%d",&n)){
  48. char str[];
  49. tt = ;
  50. trie[tt++].init();
  51. for(int i = ;i < n;i++){
  52. scanf("%s",str);
  53. build_trie(str);
  54. }
  55. scanf("%d",&m);
  56. for(int i = ;i < m;i++){
  57. scanf("%s",str);
  58. int q = quercy(str);
  59. printf("%d\n",q);
  60. }
  61. }
  62. return ;
  63. }

hdu1671  Phone List

字典树 水题

判断一个是否为另一个的前缀。

注意 9113

  911 的情况……

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6. const int MAXN = + ;
  7. const int NextNum = ;
  8.  
  9. int tt;
  10. struct Node{
  11. int next[NextNum];
  12. bool flag;
  13. void init(){
  14. memset(next,-,sizeof(next));
  15. flag = ;
  16. }
  17. };
  18. Node trie[MAXN];
  19. bool build_trie(char str[]){
  20. int p = ;
  21. int len = strlen(str);
  22. for(int i = ;i < len;i++){
  23. int x = str[i] - '';
  24. if(trie[p].next[x] == -){
  25. trie[tt].init();
  26. trie[p].next[x] = tt++;
  27. }
  28. p = trie[p].next[x];
  29. if(trie[p].flag){
  30. return ;
  31. }
  32. }
  33. for(int i = ;i < NextNum;i++){
  34. if(trie[p].next[i] != -){
  35. return ;
  36. }
  37. }
  38. trie[p].flag = ;
  39. return ;
  40. }
  41.  
  42. int main(){
  43. // freopen("input.txt","r",stdin);
  44. int t;
  45. scanf("%d",&t);
  46. while(t--){
  47. int n;
  48. scanf("%d",&n);
  49. tt = ;
  50. trie[tt++].init();
  51. bool ok = ;
  52. char str[+];
  53. for(int i = ;i < n;i++){
  54. scanf("%s",str);
  55. if(!ok){
  56. continue;
  57. }
  58. ok = build_trie(str);
  59. }
  60. printf("%s\n",ok?"YES":"NO");
  61. }
  62. return ;
  63. }

hihoCoder 1014trie树(字典树)的更多相关文章

  1. 剑指Offer——Trie树(字典树)

    剑指Offer--Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种的单词.对于每一个单词,我们要判断他出没出现过,如果出现了,求第一次出现在第几个位 ...

  2. 9-11-Trie树/字典树/前缀树-查找-第9章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第9章  查找 - Trie树/字典树/前缀树(键树) ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接☛☛☛ <数据结构-C语言版>(严蔚 ...

  3. AC自动机——1 Trie树(字典树)介绍

    AC自动机——1 Trie树(字典树)介绍 2013年10月15日 23:56:45 阅读数:2375 之前,我们介绍了Kmp算法,其实,他就是一种单模式匹配.当要检查一篇文章中是否有某些敏感词,这其 ...

  4. hihoCoder 403 Forbidden 字典树

    题意:给定个规则,个ip,问这些ip是否能和某个规则匹配,如果有多个规则,则匹配第一个.如果没能匹配成功,则认为是"allow",否则根据规则决定是"allow" ...

  5. Trie树|字典树(字符串排序)

    有时,我们会碰到对字符串的排序,若采用一些经典的排序算法,则时间复杂度一般为O(n*lgn),但若采用Trie树,则时间复杂度仅为O(n). Trie树又名字典树,从字面意思即可理解,这种树的结构像英 ...

  6. Trie树/字典树题目(2017今日头条笔试题:异或)

    /* 本程序说明: [编程题] 异或 时间限制:1秒 空间限制:32768K 给定整数m以及n个数字A1,A2,..An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大 ...

  7. Trie树 字典树-学习笔记

    字符串--蒟蒻永远的阴影 对于字符串匹配 KMP很好的解决了以一个文本串匹配一个模板串的问题 但如果模板串有多个呢 这是KMP不再适用 我们引入一个新的数据结构--字典树 (当然又有像AC自动机这样更 ...

  8. Trie树(字典树)的介绍及Java实现

    简介 Trie树,又称为前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串.与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定.一个节点的所有子孙都有相同的前缀,也 ...

  9. Luogu P2580 于是他错误的点名开始了 Trie树 字典树

    字典树裸题.每次插入询问串,查询的时候拿出来直接查,信息保留在节点上. #include <bits/stdc++.h> using namespace std; char s[51]; ...

  10. Trie树 - 字典树

    1.1.什么是Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是最大限 ...

随机推荐

  1. ELK架构浅析

    转自:http://blog.csdn.net/lively1982/article/details/50678657 ELK是Elasticsearch.Logstash.Kibana的简称,这三者 ...

  2. js 时间戳转为日期格式

    原文:js 时间戳转为日期格式 js 时间戳转为日期格式 什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time) ...

  3. Poj 1002 487-3279(二叉搜索树)

    题目链接:http://poj.org/problem?id=1002 思路分析:先对输入字符进行处理,转换为标准形式:插入标准形式的电话号码到查找树中,若有相同号码计数器增加1,再中序遍历查找树. ...

  4. XMPP个人信息展示

    在现阶段的通信服务中.各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现.实现了整个及时通信服务协议的互 ...

  5. Android自定义控件实战——水流波动效果的实现WaveView

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38556891 水流波动的波形都是三角波,曲线是正余弦曲线,但是Android ...

  6. U3D学习笔记

    1.向量的点乘.叉乘以及归一化的意义 1)点乘描述了两个向量的相似程度,结果越大两向量越相似,还可表示投影 2)叉乘得到的向量垂直于原来的两个向量 3)标准化向量:用在只关系方向,不关心大小的时候 用 ...

  7. javascript面向对象——继承

    javascript和其他语言相比,它没有真正意义上的继承,也不能从一个父类extends,要实现它的继承可以通过其他方式来实现: 步骤:1.继承父类的属性 2.继承父类的原型 下面就以一个拖拽为例子 ...

  8. win7 php 配置多个网站

    1.在C:\WINDOWS\system32\drivers\etc目录下,打开Hosts 添加A站和B站的DNS映射,如127.0.0.1 local.zhengxin.com127.0.0.1 l ...

  9. 【 D3.js 入门系列 — 1 】 第一个程序 HelloWorld

    记得以前刚上大一学 C 语言的时候,写的第一个程序就是在控制台上输出 HelloWorld .当时很纳闷,为什么要输出这个.老师解释说所有学编程入门的第一个程序都是在屏幕上输出 HelloWorld, ...

  10. jsp字段判空

    是对象吧String jsp的写法 <% if(str == null) { %> str is null <% } else { %> str not null <% ...