标签:
Description
Input
Output
Sample Input
Sample Output
#include<cstring> #include<cstdio> #include<algorithm> #include<cctype> using namespace std; struct f { int next[30]; int v; char englishi[15]; void ff() { memset(next,-1,sizeof(next)); v=0; englishi[0]=‘\0‘; } };f s [1000000]; int cut=0; void charu(char *s1,char *s2) { int i,k=0,su; for (i=0;s2[i]!=‘\0‘;i++) { su=s2[i]-‘a‘; if (s[k].next[su]==-1) { cut++; s[k].next[su]=cut; s[cut].ff(); } k=s[k].next[su]; } s[k].v=1; strcpy(s[k].englishi,s1); return ; } int find(char *s1) { int i,k=0,su; for (i=0;i<strlen(s1);i++) { su=s1[i]-‘a‘; if (s[k].next[su]==-1) break; k=s[k].next[su]; } if (s[k].v&&s[k].englishi[0]!=‘\0‘&&i==strlen(s1)) { printf("%s",s[k].englishi); return 0; } return 1; } int main() { char str1[3005],str2[3005]; int z,i; s[cut].ff(); gets(str1); while (~scanf("%s",&str1)) { if (strcmp("END",str1)==0) break; scanf("%s",&str2); charu(str1,str2); } getchar(); gets(str1); while (1) { gets(str1); if (str1[0]==‘E‘&&str1[1]==‘N‘&&str1[2]==‘D‘&&str1[3]==‘\0‘) break; z=0; for (i=0;str1[i]!=‘\0‘;i++) { if (islower(str1[i])) { str2[z]=str1[i]; z++; } else { str2[z]=‘\0‘; if (find(str2)) printf("%s",str2); printf("%c",str1[i]); z=0; } } if (z!=0) { str2[z]=‘\0‘; if (find(str2)) printf("%s",str2); z=0; } printf("\n"); } return 0; }
HDOJ-1075 What Are You Talking About 字典树
标签:
原文地址:http://www.cnblogs.com/pblr/p/4712712.html