hdu1251

来源:互联网 发布:java 长连接 框架 编辑:程序博客网 时间:2024/05/18 21:46

//在模板上稍微变下形就可以了

#include <iostream>#include<stdio.h>#include<string.h>#include<string>#include<cstdlib>using namespace std;const int maxnum=26;struct trie{    int flag;    trie *next[maxnum];};trie *root;void init(){    int i;    root=(trie *)malloc(sizeof(trie));    root->flag=0;    for(i=0;i<maxnum;i++)        root->next[i]=NULL;}void insert(char *word){    int i;    trie *temp=root;    while(*word!='\0')    {        if(temp->next[*word-'a']==NULL)        {            trie *cur=(trie *)malloc(sizeof(trie));            for(i=0;i<maxnum;i++)               {                   cur->next[i]=NULL;                   //cur->next[i]->flag=0;               }            cur->flag=0;            temp->next[*word-'a']=cur;        }        temp=temp->next[*word-'a'];        temp->flag++;        word++;    }}/*int ans;void sum(trie *temp){    if(temp->flag==true)        ans++;    if(temp==NULL)        return ;    for(int i=0;i<maxnum;i++)    {        if(temp->next[i]!=NULL)            sum(temp->next[i]);    }}*/int search(char *word){    trie *temp=root;    int i;    for(i=0;word[i]!='\0';i++)    {        if(temp==NULL||temp->next[word[i]-'a']==NULL)            return 0;        temp=temp->next[word[i]-'a'];    }    return temp->flag;}int main(){    init();    char str[16];    while(gets(str)&&str[0]!='\0')        insert(str);    while(scanf("%s",str)!=EOF)    {        printf("%d\n",search(str));    }    return 0;}


0 0
原创粉丝点击