POJ 2001 字典树裸模版

原创 2012年03月23日 09:52:55
再做几个字典树就去AC自动机...... 加油!

用模板感觉不错啊!!细节细节!!

#include<iostream>
#include<string>
#include<cstdio>
#define MAX 26
using namespace std;

struct TireNode
{
       int nCount;
       TireNode *next[MAX];
};

TireNode Memeroy[1111111];
int allocp=0;

void InitTireRoot( TireNode **pRoot )
{
     *pRoot=NULL;
}

TireNode *CreateTire()
{
         int i,k;
         TireNode *p=&Memeroy[allocp++];
         p->nCount=1;
         for( i=0;i<MAX;i++ )
              p->next[i]=NULL;
         return p;
}

void InsertTire( TireNode **Root,char *s )
{
     int i=0,k;
     TireNode *p;
     if( !(p=*Root) )
         p=*Root=CreateTire();
     
     while( s[i] )
     {
            k=s[i++]-'a';
            if( p->next[k] )
                p->next[k]->nCount++;
            else
                p->next[k]=CreateTire();
            p=p->next[k]; 
     }
} 

void SearchTire( TireNode **Root,char *s )
{
    int i=0,k;
    TireNode *p=*Root;
    while( s[i] )
    {
           printf( "%c",s[i] );
           k=s[i++]-'a'; 
           if( p->next[k] && p->next[k]->nCount==1 )
               return ;
           p=p->next[k];
    }
}



int main()
{
    //freopen( "write.out","w",stdout );
    //freopen( "read.in","r",stdin );
    TireNode *Root;
    InitTireRoot(&Root); 
    int k=0;
    char s[1111][22];
    
    while( scanf("%s",s[k])!=EOF )
           InsertTire(&Root,s[k++]);
    
    for( int i=0;i<k;i++ )
    {
         printf( "%s ",s[i] );
         SearchTire(&Root,s[i]);
         printf( "\n" ); 
    }    
    return 0;
} 


版权声明:本文为博主原创文章,转载请写明出处。

POJ 2001 字典树裸题

求每个单词最短不重复前缀 #include #include #include #include #include #include ...
  • qq574857122
  • qq574857122
  • 2013年10月03日 19:04
  • 1702

【网络流之最大流】POJ1273-Drainage Ditche【模板题】

题目链接:http://poj.org/problem?id=1273 这是一道网络流的入门题,用来理解最大流很好。 这个题目我是看的bin神专门为我们这些歌渣渣写的最大流入门博客学的;可以去膜拜一下...
  • wlxsq
  • wlxsq
  • 2015年08月29日 11:21
  • 1443

poj 3177 poj 3352 (边双连通分量裸题+缩点)

题目:http://poj.org/problem?id=3177 题意: 这两题几乎一样,都是给一个连通图,问最少加几条边可以得到边双连通图。 分析: 先求出边双连通分量(low[i]值相...
  • hjt_fathomless
  • hjt_fathomless
  • 2016年10月02日 19:12
  • 195

poj 2001 字典树

模板题,感觉这样敲挺费空间的,觉得用vector会好一些,或者用struct。 代码: #include #include #include #include using names...
  • u011663071
  • u011663071
  • 2014年04月07日 13:41
  • 490

POJ 2001 字典树

题意 给定一组字符串, 找出每个字符串的最短可识别的缩写前缀 如果到串尾也无法特定识别, 标志为整个串 题解 字典树 + 构造时前缀串 AC code:/* * Author : adr...
  • ADjky
  • ADjky
  • 2016年11月12日 20:51
  • 128

POJ 2001 字典树

Shortest Prefixes   Description A prefix of a string is a substring starting at the beginning of ...
  • u011566113
  • u011566113
  • 2013年08月21日 16:56
  • 399

POJ1287Networking(最小生成树,裸题)

Description You are assigned to design network connections between certain points in a wide area....
  • z1192277815
  • z1192277815
  • 2016年08月03日 21:32
  • 437

poj 2001字典树

题目:http://poj.org/problem?id=2001 题意
  • liuyu1942
  • liuyu1942
  • 2014年10月06日 23:08
  • 238

将oracle10g安装在lvm映射的裸设备上

oracle的数据文件放在裸设备上,提高了IO性能 sar命令中的“-b”选项可以用于监控裸设备I/O。裸设备一般用于存放数据库数据。 # sar -b 1 3 AIX 6f1 3 4 00023...
  • jiangshouzhuang
  • jiangshouzhuang
  • 2013年12月01日 22:50
  • 833

字典树入门——POJ 2001

对应POJ题目:点击打开链接
  • u013351484
  • u013351484
  • 2014年08月24日 22:04
  • 387
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 2001 字典树裸模版
举报原因:
原因补充:

(最多只允许输入30个字)