hdu 2846

来源:互联网 发布:软件项目管理软件书籍 编辑:程序博客网 时间:2024/06/06 09:39
#include <iostream>#include <cstdio>#include <cstring>using namespace std;struct node{    int s,id;    node *next[28];    node():s(0),id(-1)    {        memset(next,0,sizeof(next));    }};node *root = new node;void Insert(char *str,int id){    int l=strlen(str);    int i;    node *p,*t=root;    for(i=0;i<l;i++)    {        if(t->next[str[i]-'a']==0)        {            p=new node;            t->next[str[i]-'a']=p;            t=t->next[str[i]-'a'];        }        else        {            t=t->next[str[i]-'a'];        }        if(t->id!=id)        {            t->s++;            t->id=id;        }    }}int Find(char *str){    node *t=root;    int l=strlen(str);    int i;    for(i=0;i<l;i++)    {        t=t->next[str[i]-'a'];        if(!t)            return 0;    }    return t->s;}int main(){    int p;    scanf("%d",&p);    int i,j;    char str[50];    for(i=0;i<p;i++)    {        scanf("%s",str);        int l=strlen(str);        for(j=0;j<l;j++)            Insert(str+j,i);    }    scanf("%d",&p);    for(i=0;i<p;i++)    {        scanf("%s",str);        int s=Find(str);        printf("%d\n",s);    }    return 0;}

原创粉丝点击