#include <stdio.h> #include <string.h> #define M 26 #define WordSize 32 #define WordCount 50000 struct node{ int end; node *child[M]; node() { end = 0; memset(child,NULL,sizeof(child)); } }; char map[WordCount][WordSize]; void insert(node *root, char *str) { node *p = root; int len = strlen(str); for(int i=0; i<len; i++) { int k = str[i] - 'a'; if(p->child[k] == NULL) p->child[k] = new node; p = p->child[k]; } p->end = 1; } int find(node *root, char *str) { node *p = root; int len = strlen(str); for(int i=0; i<len; i++) { int k = str[i] - 'a'; if(p->child[k] == NULL) return 0; p = p->child[k]; } return p->end; } int cutFind(node *root, char *str) { int len = strlen(str); for(int i=1; i<len; i++) { if(find(root,str + i)) ; else continue; char ch = str[i]; str[i] = '