简单字典树练习
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1251
这个相当简单就不解释了。
直接上代码。
View Code
#include "iostream" #include "cstdio" #include "cstring" #include "string" using namespace std; typedef struct node{ int Cross; struct node *next[26]; }node; node *head; void InitHead(){ head = (node *)malloc(sizeof(node)); head->Cross = 0; memset(head->next, NULL, sizeof(head->next)); } void Build(char *word){ node *p = head; int i, k, Len = strlen(word); for(i=0; i<Len; i++){ k = word[i]-'a'; if(p->next[k]==NULL){ p->next[k] = (node*)malloc(sizeof(node)); p->next[k]->Cross=1; memset(p->next[k]->next, NULL, sizeof(p->next[k]->next)); }else{ p->next[k]->Cross++; } p = p->next[k]; } } int Find(char *pre){ node *p = head; int i, k, Len = strlen(pre); for(i=0; i<Len; i++){ k = pre[i]-'a'; if(p->next[k]==NULL) return 0; p = p->next[k]; if(i==Len-1){ return p->Cross; } } } int main(){ char word[15]; InitHead(); while(gets(word), strcmp(word, "")!=0){ Build(word); } while(gets(word)){ printf("%d\n",Find(word)); } }
posted on 2012-04-26 20:48 More study needed. 阅读(162) 评论(0) 编辑 收藏 举报