• 字典树


    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    struct T {
        T * ch[26];  
        int n, flag;
    }rt;
    char in[15];
    void init ( T * t ) {
         for ( int i = 0; i < 26; ++ i ) t->ch[i] = NULL;    
         t->n = t->flag = 0;
    }
    void insert ( T *t, char *in ) {
         if ( *in ) {
             if ( t->ch[ *in - 'a' ] == NULL ) {
                t->ch[ *in - 'a' ] = ( T * ) malloc ( sizeof ( T ) );
                init ( t->ch[ *in - 'a' ] );    
             }    
             t->ch[ *in - 'a' ]->n ++;
             insert ( t->ch[ *in - 'a' ], in + 1 );
         } else {
             t->flag = 1;     
         }   
    }
    int find ( T *t, char *in ) {
        if ( t->ch[ *in - 'a' ] != NULL ) {
            if ( *( in + 1 ) == '\0' ) {
                return t->ch[ *in - 'a' ]->n;    
            }
            return find ( t->ch[ *in - 'a' ], in + 1 );
        } else return 0;   
    }
    int main ()
    {
        while ( gets ( in ) ) {
              if ( strlen ( in ) == 0 ) break;
              insert ( &rt, in );     
        }
        while ( ~scanf ( "%s", in ) ) {
              printf ( "%d\n", find ( &rt, in ) );     
        }
        return 0;   
    }
  • 相关阅读:
    CSS选择器的优先级
    SQL Server——死锁查看
    VS2008激活找不到密匙输入框
    迷茫的周一
    SQL Server 2012使用日常
    Excel默认去除开头的0
    PDA日常问题
    第一个.NET小程序
    网站发布
    IIS配置——常见问题
  • 原文地址:https://www.cnblogs.com/QQbai/p/2135272.html
Copyright © 2020-2023  润新知