Tranvick

Untitled

Mar 4th, 2012
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. struct bor{
  2.     int next[26];//next[i] - в какую вершину мы попадем, если перейдем из нашей вершины по символу i. Тут 26 элементов - для латинского алфавита
  3. } t[N]; // сам бор(массив структур). Вообще в этой задаче можно и просто одномерным массивом, но обычно в каждой вершине бора хранится что-то еще кроме переходов.
  4. int last=0; // номер последнего элемента в боре
  5.  
  6. void insert(string & s){ // вставка строки в бор
  7.     int cur=0; // стартуем из корня, он в нулевой вершине
  8.     int m=s.length();
  9.     for (int i=0;i<m;i++){
  10.         if (!t[cur].next[s[i]-'a']) t[cur].next[s[i]-'a']=++last; //если из нашей вершины нет перехода по нужному символу, просто добавим новую вершину
  11.         cur=t[cur].next[s[i]-'a']; //переходим по текущему символу и обрабатываем следующий
  12.     }
  13. }
Advertisement
Add Comment
Please, Sign In to add comment