12345678910111213141516171819202122232425 |
- const int maxnode = 40000;
- const int sigma_size = 26;
- struct Trie {
- int ch[maxnode][sigma_size];
- int val[maxnode];
- int sz; //nombre de noeuds
- void clear() { sz = 1; memset(ch[0], 0, sizeof(ch[0])); } // initialisation
- int idx(char c) { return c - 'a'; }
- void insert(const char *s, int v) {
- int u = 0, n = strlen(s);
- for(int i = 0; i < n; i++) {
- int c = idx(s[i]);
- if(!ch[u][c]) { // il y'a pas de noeud correspondant
- memset(ch[sz], 0, sizeof(ch[sz]));
- val[sz] = 0;
- ch[u][c] = sz++;
- }
- u = ch[u][c];
- }
- val[u] = v;
- }
- void find(char *s){
- //TODO
- }
- }
|