hdu 1671 Phone List

来源:互联网 发布:映美620k驱动端口 编辑:程序博客网 时间:2024/06/03 20:15

简单的字典树。。
释放内存嘛。。递归一下就好了。。
根节点注意一下哦

虽然我居然卡了。。 呀,,凌晨晕乎乎的原因吧。。。

碎觉碎觉、、、

#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<iostream>using namespace std;#define maxn 10010char test[50];int flag;struct trie{    int v;    trie *next[10];    trie()    {        v=0;        for(int i=0;i<10;i++)        {            next[i]=NULL;        }    }};trie *root;void build(char *str){    int len=strlen(str);    trie *p=root;    for(int i=0;i<len;i++)    {        int id=str[i]-'0';        if(p->next[id]==NULL)        {            trie *q=new trie;            p->next[id]=q;        }        p=p->next[id];        if(p->v)        {            flag=1;            return ;        }    }    for(int i=0;i<10;i++)    {        if(p->next[i]!=NULL)        {            flag=1;            return ;        }    }    p->v=1;}void zhan(trie *p){    if(p==NULL)        return ;    for(int i=0;i<10;i++)    {        if(p->next[i]!=NULL)        {            zhan(p->next[i]);        }    }    delete p;}int main(){    int T;    cin>>T;    while(T--)    {        flag=0;        int n;        cin>>n;        zhan(root);        root=new trie;        for(int i=1;i<=n;i++)        {            cin>>test;            if(flag)                continue;            build(test);        }        if(!flag)        {            cout<<"YES"<<endl;        }        else        {            cout<<"NO"<<endl;        }    }    return 0;}
0 0
原创粉丝点击