首页 > 代码库 > 字典树模板
字典树模板
1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 6 using namespace std; 7 typedef struct node{ 8 int cnt; 9 node* nex[26];10 } Tire;11 Tire root;12 void creat_tire(char *str){13 14 int len = strlen(str), id;15 Tire *p = &root, *q;16 for(int i = 0; i < len; i++){17 id = str[i] - ‘a‘;18 if(p->nex[id] == NULL){19 q = new Tire;20 q->cnt = 1;21 for(int j = 0; j < 26; j++){22 q->nex[j] = NULL;23 }24 p->nex[id] = q;25 p = p->nex[id];26 }else {27 p->nex[id]->cnt++;28 p = p->nex[id];29 }30 }31 }32 int find_tire(char * str){33 int len = strlen(str), id;34 Tire *p = &root;35 for(int i = 0; i < len; i++){36 id = str[i] - ‘a‘;37 p = p->nex[id];38 if(p == NULL) return 0;39 }40 return p->cnt;41 }42 int main()43 {44 char s[15];45 for(int i = 0; i < 26; i++) root.nex[i] = NULL;46 while(gets(s) && s[0] != ‘\0‘){47 creat_tire(s);48 //printf("%s", s);49 }50 memset(s, 0, sizeof(s));51 while(scanf("%s", s) != EOF){52 printf("%d\n", find_tire(s));53 }54 return 0;55 }
字典树模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。