const int maxnode=4000100+10;
const int sigma_size=26;
stuct Tire{
int ch[maxnode][sigma_size];
int val[maxnode];
int sz;
}
void clear(){sz=1;mamset(ch[0],0,sizeof(ch[0]));}
int idx(char c){return c-‘a’;}
void insert(const chars,int v){
int u=0,n=strlen(s);
for(int i=0;i<n;i++){
int c=idx(s[i]);
if(!ch[u][c]){
memset(ch[sz],0,sizeof(ch[sz]));
val[sz]=0;
ch[u][c]=sz++;
}
u=ch[u][c];
}
val[u]=v;
}
bool find(const char*s,int len){
int u=0;
for(int i=0;i<len;i++){
if(s[i]==’\0’)break;
int c=idx(s[i]);
if(!ch[u][c])break;
u=ch[u][c];
if(val[u]!=0)return true;
}
return false;
}
Tire树
最新推荐文章于 2024-03-28 09:57:38 发布