首页 > 代码库 > 字典树
字典树
1 const int maxn = 1e5 + 7; 2 const int SIZE = 10;// 字符数量,如小写字母改为26,记得修改getid 3 4 struct Dictionary_tree{ 5 int cnt; 6 int next[maxn][SIZE]; 7 int val[maxn]; 8 9 void init(){ 10 cnt = 0; 11 memset(next[cnt],-1,sizeof(next[cnt])); 12 val[0] = 0; 13 } 14 15 void add(){ 16 cnt++; 17 memset(next[cnt],-1,sizeof(next[cnt])); 18 val[cnt] = 0; 19 } 20 int getid(char c){ 21 return c - ‘0‘; 22 } 23 int build(char *s,int v){ 24 int now = 0; 25 for(int i=0;s[i];i++){ 26 int id = getid(s[i]); 27 if(next[now][id] == -1){ 28 add(); 29 next[now][id] = cnt; 30 } 31 now = next[now][id]; 32 if(val[now] == 1) return 1; 33 } 34 val[now] = v; 35 return 0; 36 } 37 38 int query(char *s){ 39 int now = 0; 40 for(int i=0;s[i];i++){ 41 int id = getid(s[i]); 42 if(next[now][id] == -1) return -1; 43 now = next[now][id]; 44 } 45 return val[now]; 46 } 47 }tre;
字典树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。