POJ_2001_Shortest Prefixes
题意:给定N个单词的字典,输出N个单词和这N个单词的确定字符串。
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<map> #include<cmath> using namespace std; struct Trie //字典树结构 { Trie *child[26]; int num; //记录该字母的出现次数 Trie() //构造函数 { num=0; memset(child,0,sizeof(child)); } }; Trie *root,*s; void Create(char *str) //插入单词 { s=root; int i=0; while(str[i]) { int id=str[i]-'a'; if(s->child[id]==0) //如果该字母还没有出现在字典中 { s->child[id]=new Trie; s=s->child[id]; } else { s=s->child[id]; s->num++; } i++; } } void Search(char *str) { s=root; for(int i=0;i<strlen(str);++i) { int id=str[i]-'a'; s=s->child[id]; printf("%c",str[i]); if(s->num==0) break; //如果该字母只出现了一次 } printf("\n"); } char a[1002][30]; int main() { int i=0,j; root=new Trie; while(~scanf("%s",a[i])) { Create(a[i]); i++; } for(j=0;j<i;++j) { printf("%s ",a[j]); Search(a[j]); } return 0; }
                    
                
                
            
        
浙公网安备 33010602011771号