注意:本題只有一組測試數據,處理到文件結束.
Output對於每個提問,給出以該字符串爲前綴的單詞的數量.
Sample Input
banana band bee absolute acm ba b band abcSample Output
2 3 1 0
這是一道非常經典的字典樹題目,赤裸裸的字典樹。需要注意的是需要使用C++提交,G++會超。
字典樹專題:點擊打開鏈接http://blog.csdn.net/wang_heng199/article/details/76448804
ac代碼:
//提交代碼使用C++,G++會超內存
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
struct node
{
int count;
node *childs[26];
node()
{
count=0;
int i;
for(i=0;i<26;i++)
childs[i]=NULL;
}
};
node *root=new node;
node *current,*newnode;
void insert(char *str)//插入
{
int i,m;
current=root;
for(int i=0;i<strlen(str);i++)
{
m=str[i]-'a';
if(current->childs[m]==NULL)
current->childs[m]=new node;
current=current->childs[m];
(current->count)++;
}
}
int search(char *str)//查找
{
int i,m;
current=root;
for(i=0;i<strlen(str);i++)
{
m=str[i]-'a';
if(current->childs[m]==NULL)
return 0;
current=current->childs[m];
}
return current->count;
}
int main()
{
char str[20];
while(gets(str),strcmp(str,""))
insert(str);
while(gets(str)!=NULL)
printf("%d\n",search(str));
return 0;
}
題目鏈接:點擊打開鏈接http://acm.hdu.edu.cn/showproblem.php?pid=1251