标签:des style blog color io os java ar strong
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K (Java/Others)
Total Submission(s): 14107 Accepted Submission(s): 4546
1 /*hdu 1075 字典树写法*/ 2 //#define LOCAL 3 #include<cstdio> 4 #include<cstring> 5 #include<cstdlib> 6 typedef struct node 7 { 8 int id; 9 struct node *child[26]; 10 }Trie; 11 void Insert(char *s,Trie *root,int v) 12 { 13 Trie *cur=root,*curnew; 14 int i,pos; 15 for(i=0;s[i]!=‘\0‘;i++){ 16 pos=s[i]-‘a‘; 17 if(cur->child[pos]==NULL) 18 { 19 curnew= new Trie; 20 curnew->id=0; 21 for(int j=0;j<26;j++) 22 curnew->child[j]=NULL; 23 cur->child[pos]=curnew; 24 } 25 cur=cur->child[pos]; 26 } 27 cur->id=v; 28 } 29 int query(char *s,Trie *root) 30 { 31 Trie *cur=root; 32 int i,pos; 33 for(i=0;s[i]!=‘\0‘;i++){ 34 pos=s[i]-‘a‘; 35 if(cur->child[pos]!=NULL) 36 cur=cur->child[pos]; 37 else return 0; //输出原字符串 38 } 39 return cur->id; 40 } 41 char aa[700000][11],bb[11]; 42 char str[3010]; 43 int main() 44 { 45 #ifdef LOCAL 46 freopen("test.in","r",stdin); 47 #endif 48 Trie *root= new Trie ; 49 root->id=0; 50 int st; 51 for(int i=0;i<26;i++) 52 root->child[i]=NULL; 53 scanf("%s",aa[0]); 54 int i=1; 55 while(scanf("%s",aa[i]),strcmp(aa[i],"END")) 56 { 57 scanf("%s",bb); 58 Insert(bb,root,i); //对应标号 59 i++; 60 } 61 scanf("%s",aa[0]); 62 getchar(); 63 while(gets(str),strcmp(str,"END")) 64 { 65 for(st=i=0;str[i]!=‘\0‘;i++) 66 { 67 if(str[i]<‘a‘||str[i]>‘z‘){ 68 if(i>st){ 69 strncpy(aa[0],str+st,i-st); 70 aa[0][i-st]=‘\0‘; 71 printf("%s",aa[query(aa[0],root)]); 72 } 73 st=i+1; 74 printf("%c",str[i]); 75 } 76 } 77 puts(""); 78 } 79 return 0; 80 }
当然可以用map,在这里就不在补充啦!喵喵!O(∩_∩)O哈哈~
hdu----(1075)What Are You Talking About(trie之查找)
标签:des style blog color io os java ar strong
原文地址:http://www.cnblogs.com/gongxijun/p/3977983.html