这个写的比较惨,这个复杂度只能过50%数据,我写了个大概跟字典树差不多的,还可以看,起码跑的比较快#include #include struct Trie{    Trie *next[ 26 ];    int c;    void init( )    {        int i;        for ( i = 0; i init( );    char data[ 51 ];    Trie *p, *t;    int i, j, count;    maxn = 0;    for ( i = 0; i next[ data[ j ] - 'a' ] )            {                p = p->next[ data[ j ] - 'a' ];                count += p->c;            }            else            {                t = new Trie;                t->init( );                p->next[ data[ j ] - 'a' ] = t;                p = t;            }        }        p->c = 1;        count++;        if ( count > maxn )            maxn = count;    }}void print( ){    printf("%d\n", maxn);}int main( ){    freopen("link.in", "r", stdin);     freopen("link.out", "w", stdout);    work( );    print( );    return 0;}
|