统计难题
HDU - 1251
简单字典树。
代码语言:javascript复制#include <iostream>
#include <string.h>
using namespace std;
struct node {
int num;
struct node *next[26];
node(){
for(int i = 0; i < 26; i ) {
next[i] = NULL;
}
num = 0;
}
};
void Insert(char word[], struct node *root)
{
struct node *p = root;
for(int i = 0; word[i] ; i )
{
if(p -> next[word[i] - 'a'] == NULL)
p -> next[word[i] - 'a'] = new node;
p = p -> next[word[i] - 'a'];
p -> num ;
}
}
int fin(char word[], struct node *root)
{
struct node *p = root;
for(int i = 0; word[i] ; i )
{
if(p -> next[word[i] - 'a'] == NULL) return 0;
p = p -> next[word[i] - 'a'];
}
return p -> num;
}
int main()
{
char word[15];
struct node *root;
root = new node;
while(cin.getline(word,12)){
if(strlen(word)==0 || word[0]==' ')
break;
Insert(word,root);
}
while(scanf("%s",word)!=EOF){
printf("%dn",fin(word, root));
}
return 0;
}