---恢复内容开始---

trie树,我是设置了号码结束标志,在insert函数里做处理:如果在插入的过程中,一直没有开辟新的节点,说明新插入的这个号码是某个已经插入了的号码的前缀,输出“NO”。如果在插入的过程中,经过了结束标志,说明这个新插入的号码之前已经插入了前缀号码,同样的,输出“NO”。此外,都输出“YES”。

 1 #include<stdio.h>
 2 #include<malloc.h>
 3 #include<string.h>
 4 typedef struct tnode
 5 {
 6     int mark;
 7     tnode *next[10];
 8 }tnode;
 9 tnode *root;
10 void init()
11 {
12     int i;
13     root=(tnode*)malloc(sizeof(tnode));
14     for(i=0;i<10;i++)
15         root->next[i]=NULL;
16   root->mark=0;
17
18 }
19 int  insert(char *str)
20 {
21     tnode *r=root,*child;
22     int i,flag=0;
23     while(*str!='\0')
24     {
25         if(r->next[*str-'0']==NULL)
26         {   flag=1;
27             child=(tnode*)malloc(sizeof(tnode));
28             for(i=0;i<10;i++)
29                 child->next[i]=NULL;
30             child->mark=0;
31             r->next[*str-'0']=child;
32
33
34         }
35         if(r->next[*str-'0']->mark==1){flag=0;break;}
36         r=r->next[*str-'0'];
37         str++;
38
39     }
40     r->mark=1;
41     if(!flag) return 1;
42     else return 0;
43 }
44 void del(tnode *r)
45 {
46     for(int i=0;i<10;i++)
47     {
48         if(r->next[i]!=NULL)
49         del(r->next[i]);
50     }
51     free(r);
52 }
53
54 int search(char *str)
55 {
56     tnode *r=root;
57     int i=0,len,j;
58     len=strlen(str);
59     for(j=0;j<len-1;j++)
60     {
61         r=r->next[str[i]-'0'];
62     }
63     for(i=0;i<10;i++)
64         if(r->next[i]!=NULL)
65             return 1;
66         return 0;
67 }
68 int main()
69 {
70     int T,n,i,flag,mark;
71     char num[10005][20],ch;
72     scanf("%d",&T);
73     while(T--)
74     {
75         scanf("%d",&n);
76         ch=getchar();
77         init();
78         gets(num[0]);
79         flag=insert(num[0]);
80         mark=0;
81         for(i=1;i<n;i++)
82         {
83             gets(num[i]);
84             flag=insert(num[i]);
85             if(flag)mark=1;;
86         }
87
88
89    if(mark)printf("NO\n");
90
91     else printf("YES\n");
92         del(root);
93
94     }
95
96     return 0;
97 }

---恢复内容结束---

转载于:https://www.cnblogs.com/leeshum/archive/2013/04/17/3027112.html

HDU1671-Phone List (trie树)相关推荐

  1. usaco Cowxor (trie 树)

    没想到trie树还可以用在这上面,厉害厉害. [分析]这是字母树的经典应用.首先因为是求xor的最大值,可以用前缀和计算xor值,然后n^2枚举即可. [cpp] view plaincopy for ...

  2. 字符串匹配算法 -- AC自动机 基于Trie树的高效的敏感词过滤算法

    文章目录 1. 算法背景 2. AC自动机实现原理 2.1 构建失败指针 2.2 依赖失败指针过滤敏感词 3. 复杂度及完整代码 1. 算法背景 之前介绍过单模式串匹配的高效算法:BM和KMP 以及 ...

  3. 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全

    文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...

  4. POJ 2418 Hardwood Species(trie 树)

    题目链接 开始想用map的,字典序不会搞,还是老老实实的用trie树把.好久没写了,忘得差不多了. 1 #include <iostream> 2 #include <cstdio& ...

  5. 【bzoj3261】最大异或和 可持久化Trie树

    题目描述 给定一个非负整数序列 {a},初始长度为 N.        有M个操作,有以下两种操作类型: 1.A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N+1. 2.Q l r x: ...

  6. 算法 | 动画+解析,轻松理解「Trie树」

    Trie这个名字取自"retrieval",检索,因为Trie可以只用一个前缀便可以在一部字典中找到想要的单词. 虽然发音与「Tree」一致,但为了将这种 字典树 与 普通二叉树 ...

  7. 浅谈树形结构的特性和应用(上):多叉树,红黑树,堆,Trie树,B树,B+树......

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 上篇文章我们主要介绍了线性数据结构,本篇233酱带大家看看 无所不 ...

  8. Trie树合并 + SG函数 ---- BZOJ4730. Alice和Bob又在玩游戏(动态开点Trie 树上全局异或标记 + 合并 + 博弈论)

    题目大题 题目大意: 解题思路: 首先我们对于子树u的SG函数为SG函数为SG函数为 ⨁是异或和\bigoplus是异或和⨁是异或和 SG[u]=mex{⨁w∈(w的父亲在u到v的路径上)SG[w]∣ ...

  9. SZUACM集训字符串基础总结: 字符串最小表示 ,KMP, EXKMP, Manracher, Trie树,字符串的hash; 附带一写常见的运用技巧,邝斌大佬的板子和例题[持续更新]

    第一部分 字符串的匹配<-------->KMP 模式匹配:子串的定位运算称为串的模式匹配或串匹配. 假设有两个串S,T,设S为主串,也称正文串,T为子串,也称为模式,在主串S中查找与模式 ...

  10. BZOJ 1590.Secret Message 秘密信息(Trie树) [Usaco2008 Dec]【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ简单题合集x Weblink https://hydro.ac/d/bzoj/p/1590 P ...

最新文章

  1. mac80211解析之发送速率控制
  2. VTK:图片之ImageOpenClose3D
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1106:年龄与疾病
  4. 我三年开发经验,从字节跳动抖音离职后,吐血整理
  5. 第四篇:断路器(Hystrix)(Finchley版本)V2.0_dev
  6. 维信小程序button样式重写
  7. 将ini文件内容读出
  8. 系统设计和机器学习算法
  9. 优客365 v2.9版本 后台存在SQL注入
  10. 【2020年TI杯江苏省大学生电子设计竞赛回顾——C题:坡道行驶电动小车(江苏省二等奖)】
  11. 超分辨 :SRCNN
  12. android 微信开发文档,微信开放文档
  13. 【工具】用PPT排版打印海报时图片分辨率问题
  14. SQLserver安装程序无法打开注册表项 解决办法
  15. pandas parquet文件读取pyarrow、feather文件保存与读取;requests 或wget下载图片文件
  16. 2020年常见的服务器都有哪些?都有什么优缺点?
  17. purifier 常用配置 保留 id 和 iframe
  18. python tkinter画布设置按钮对图片放大缩小_Tkinter可调整大小的对象Python画布
  19. 【推荐系统】DUPN:Deep User Perception Network
  20. c语言求出现次数最多的字符,保证你看懂

热门文章

  1. ios .a文件支持结构合并arm64 armv7 i386 x86_64
  2. 通过因特网连接Beaglebone Black
  3. Kali Linux安全渗透教程(内部资料)
  4. opencv python是什么_Python+OpenCV 十几行代码模仿世界名画
  5. 卡内基梅隆大学的研究人员提出新的源定位算法: SilenceMap,寻找大脑的静默区域...
  6. Python-EEG工具库MNE中文教程(1)-MNE中数据结构Raw及其用法简介
  7. 克隆真人语音只要1句话,AI问诊超96.4%全科医生!科大讯飞年度黑科技大秀,余承东都来了...
  8. 都2021年了,输入法还能怎么玩出花?百度智慧输入:toB商业化!
  9. 大货车事故频发,智能物流可减少19.9%事故率
  10. 3页论文被引用17915次!88岁物理学泰斗温伯格去世,霍金《时间简史》受他启发...