zoukankan      html  css  js  c++  java
  • poj 3630 字典树

    只能创建静态树,动态树超时

    #include <iostream>
    #include <string>
    using namespace std;
    struct treenode
    {
     bool color;
     treenode *next[10];
     treenode()
     {
      color=false;
      memset(next,NULL,sizeof(next));
     }
    };
    treenode tri[100001];
    int num;
    bool Insert(treenode *root,string str)//可行时反回true
    {
     bool flg1,flg2;
     treenode *p=root;
     flg1=true;//假设可行
     flg2=false;//假设不可行
     for(int i=0;i<str.length();i++)
     {
      int data=str[i]-'0';
      if(p->next[data]==NULL)
      {p->next[data]=&tri[++num];flg2=true;}
      if(p->color!=true)
        ;
      else
       flg1=false;
      p=p->next[data];
     }
     p->color=true;
     return flg1&flg2;
    }
    int main()
    {
     int t,n,i;
     cin>>t;
     string str;
     char a[10];
     while(t--)
     {
      bool flg=true;//假设可行
      num=0;
      cin>>n;
      treenode *root=&tri[0];
      for(i=0;i<n;i++)
      {
       scanf("%s",a);
       str=a;
       if(flg&&Insert(root,str))
         ;
       else   
        flg=false;
      }  
      if(flg)
       cout<<"YES"<<endl;
      else
       cout<<"NO"<<endl;
      for (int i = 0; i <=num; i++)    
      {     
       tri[i].color = false;   
       memset(tri[i].next, NULL, sizeof(tri[i].next));   
      } 
     }
     return 0;
    }

  • 相关阅读:
    lrzsz踩坑记
    《西安游记》
    《这世界那么多人》
    Go 日常开发常备第三方库和工具
    Go 里的超时控制
    菜鸟轻松拿offer: 软件测试工程师面试秘笈
    Django 练习教程
    JasperReports入门教程(五):分组打印
    并发的特性和锁的原理,分类
    面试高频算法
  • 原文地址:https://www.cnblogs.com/qijinbiao/p/2161687.html
Copyright © 2011-2022 走看看