01字典树贪心查询+建立+删除:
1 #define maxn 2 2 typedef struct tree 3 { 4 tree *nex[maxn]; 5 int v; 6 int val; 7 }tree; 8 tree root; 9 void init()10 {11 for(int i=0;inex[id]==NULL)24 {25 q=(tree *)malloc(sizeof(root));26 q->v=1;27 for(int j=0;j<2;j++)28 {29 q->nex[j]=NULL;30 }31 p->nex[id]=q;32 }33 else34 {35 p->nex[id]->v++;36 }37 p=p->nex[id];38 if(i==len-1)39 {40 p->val=va;41 }42 }43 }44 void del(char *str)45 {46 int len=strlen(str);47 tree *p=&root;48 for(int i=0;i nex[id]->v--;52 tree *tmp=p->nex[id];53 if(p->nex[id]->v==0)54 {55 p->nex[id]=NULL;56 }57 p=tmp;58 }59 return ;60 }61 void find(char *str,int query)62 {63 int len=strlen(str);64 tree *p=&root;65 for(int i=0;i nex[1-id]!=0)69 {70 p=p->nex[1-id];71 }72 else73 p=p->nex[id];74 if(p==NULL)75 return ;76 if(i==len-1)printf("%d\n",p->val^query);77 }78 }