plantilla trie

1  // tiempo complejidad de O (NC) N es el número de nodos, C es el tamaño del alfabeto 
2  
. 3  int Trie [N] [ 26 es ], CNT [N], TOT = 1 ;
 . 4  // 0 dot tanto raíz , el nodo está vacía
 . 5  // Trie [] [] de almacenamiento de sub-árbol de cada nodo
 . 6  // CNT [] almacena el número de palabras al final de cada nodo
 . 7  
. 8  // inserto de una cadena 
. 9 inline void inserto ( Char * STR)
 10  {
 11.      int P = 1. ;
 12 es      para ( int I = 0 ; STR [I]; I ++ )
 13 es     {
 14          int CH STR = [I] - ' A ' ;
 15          IF (! Trie [P] [CH]) Trie [P] [CH] ++ = TOT;
 16          P = Trie [P] [CH];
 . 17      }
 18 es      CNT [P] ++ ;
 . 19  }
 20 es  
21 es  // número de veces de cadena de consulta ocurrencia 
22 se inline int consulta ( Char * STR)
 23 es  {
 24      int P = 1. ;
 25      para ( int I = 0 ; STR [I] ; i ++ )
26      {
 27          int ch = str [i] - ' un ' ;
28          si (trie [p] [ch]!) De retorno  0 ;
29          p = trie [p] [ch];
30      }
 31      de retorno cnt [p];
32 }

 

Supongo que te gusta

Origin www.cnblogs.com/hhyx/p/12528880.html
Recomendado
Clasificación