The naked dictionary tree... is used to get familiar with the dictionary tree. By the way, pay attention to the various small details during writing.
Touch me
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 5 const int size = 26; 6 char str[size]; 7 typedef struct trie 8 { 9 trie* next[size];10 int cnt;11 };12 trie* root;13 14 void init()15 {16 root = new trie;17 for( int i = 0 ; i<size ; i++ )18 root->next[i] = NULL;19 }20 21 void create( char* str )22 {23 int len = strlen(str);24 trie* p = root;25 //trie* q;26 for( int i = 0 ; i<len ; i++ )27 {28 int id = str[i] - ‘a‘;29 if( p->next[id] == NULL )30 {31 //q = new trie;32 p->next[id] = new trie;33 p->next[id]->cnt = 1;34 for( int j = 0 ; j<size ; j++ )35 {36 p->next[id]->next[j] = NULL;37 }38 //p->next[id] = q;39 }40 else41 {42 p->next[id]->cnt ++;43 }44 p = p->next[id];45 }46 }47 48 int find( char* str )49 {50 int len = strlen(str);51 trie* p = root;52 for( int i = 0 ; i<len ; i++ )53 {54 int id = str[i] - ‘a‘;55 p = p->next[id];56 if( p==NULL )57 {58 return 0;59 }60 }61 return p->cnt;62 }63 64 int main()65 {66 init();67 while( gets(str) && str[0]!=‘\0‘ )68 {69 create( str );70 }71 while( cin >> str )72 {73 cout << find(str) << endl;74 }75 return 0;76 }View code
The comments are also correct... the =-= that was written to verify your ideas
Today:
If you can't fly then run
If you can't run then walk
If you can't walk then crawl
But wharever you do you have to keep moving forward