字典树模板
2016-01-02 17:59
330 查看
#include<cstdio> #include<cstring> #include<cstdlib> #include<vector> #include<map> #include<iostream> #include<algorithm> using namespace std; struct trie { int cont; trie *next[27]; trie() { cont=0; memset(next,0,sizeof(next)); } }; trie *root; void init(char *v) { trie *p=root; for(int i=0; v[i]; i++) { int pet=v[i]-'a'; if(p->next[pet]==NULL) p->next[pet]=new trie(); p=p->next[pet]; p->cont++; } } int finde(char *v) { trie *p=root; int i; for(i=0; v[i]; i++) { int tep=v[i]-'a'; if(p->cont==1) break; p=p->next[tep]; } return i; } void del(trie *p) { for(int i=0; i<26; i++) { if(p->next[i]!=NULL) del(p->next[i]); } free(p); } int main() { char ch[1005][25]; char v[25]; int i=0; root=new trie();//先为跟节点申请内存; while(gets(ch[i]),strcmp(ch[i],"")) { init(ch[i]); //strcpy(ch[i],v); i++; } for(int j=0; j<=i; j++) { char v[25]; int t=finde(ch[j]); //printf("%s %d\n",ch[j],t); printf("%s ",ch[j]); for(int k=0; k<t; k++) printf("%c",ch[j][k]); printf("\n"); } return 0; }
相关文章推荐
- JAVA 正则表达式的三种模式: 贪婪, 勉强和占有的讨论
- MFC VC++6.0列表控件的使用
- 10391compound words
- IOS7:学习笔记2
- [SDOI2014][JZOJ3624]数数
- Iterator
- 【LWJGL2 WIKI】【基础篇】基础2:输入
- 算法导论2:几个习题 2016.1.2
- 公共库同时支持32位和64程序
- 物联网和嵌入式开发情怀—2015年博客原创总结
- UISwitch 开关控件
- 夺命雷公狗---微信开发01----测试下回访消息
- Linux各目录的作用
- Hibernate中三种状态
- 【Linux学习笔记】常用命令速记
- [grub实现]U盘引导多个linux镜像安装,同时支持BIOS和UEFI模式
- 【STL】next_permutation的实现
- grub应用
- Android OpenGL ES 应用(二) 纹理
- APM浅析