第一次寫Trie樹,完全抄的模板。
#include <iostream>using namespace std;const int kind = 26;struct Treenode{int count;Treenode *next[kind];Treenode (){count = 1;for ( int i = 0; i < kind; ++i )next[i] = NULL;}};void Insert ( Treenode *&root, char *word ){Treenode *location = root;int i = 0, branch = 0;if ( location == NULL ){location = new Treenode();root = location;}while ( word[i] ){branch = word[i] - 'a';if ( location->next[branch] )location->next[branch]->count++;elselocation->next[branch] = new Treenode();i++;location = location->next[branch];}}int Search ( Treenode *root, char *word ){Treenode *location = root;int i = 0, branch = 0, ans;if ( location == NULL )return 0;while ( word[i] ){branch = word[i] - 'a';if ( !location->next[branch] )return 0;i++;location = location->next[branch];ans = location->count;}return ans;}int main(){char word[10];char query[10];Treenode *root = NULL;while ( gets(word) ){if ( (word[0]==0) ) break;Insert ( root, word );}while ( gets(query) )cout << Search(root,query) << endl;return 0;}