HDOJ1251 统计难题(字典树)

来源:互联网 发布:上海质检院待遇知乎 编辑:程序博客网 时间:2024/06/06 00:05

WA了,回头找错。。。

#include<iostream>#include<string.h>using namespace std;#define maxn 26struct node{    int num;    node *next[maxn];};node *root;node *build(){    node *p=new node;    p->num=1;    for(int i=0;i<maxn;i++)        p->next[i]=NULL;    return p;}void insert(char *s){    node *p=root;    int len=strlen(s);    for(int i=0;i<len;i++){        if(p->next[s[i]-'a']!=NULL){            p=p->next[s[i]-'a'];            p->num++;        }        else{            p->next[s[i]-'a']=build();            p=p->next[s[i]-'a'];            p->num=1;        }    }}int search(char *s){    node *p=root;    int len=search(s);    for(int i=0;i<len;i++){        if(p->next[s[i]-'a']==NULL)            return 0;        else             p=p->next[s[i]-'a'];    }    return p->num;}int main(){    char s1[11],s2[11];    root=build();    while(gets(s1) && strcmp(s1,"")!=0){//strcmp比较两个字符串的大小        insert(s1);    }    while(gets(s2)!=NULL){        int cnt=search(s2);        cout<<cnt<<endl;    }    return 0;}
原创粉丝点击