Tire树(模板)

mac2026-01-24  6

HDU1251 在HDU上交g++超内存c++就没事,,, 咱也不知道为什么,咱也不敢问

#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> using namespace std; struct tire{ int n; tire *next[26]; }; tire root; void in(char *a){ int l=strlen(a); tire *p=&root; tire *q; for(int i=0;i<l;i++){ int c=a[i]-'a'; if(p->next[c]==NULL){ q=(tire *)malloc(sizeof(tire)); for(int i=0;i<26;i++) q->next[i]=NULL; q->n=1; p->next[c]=q; p=p->next[c]; } else{ p->next[c]->n++; p=p->next[c]; } } } int ask(char *a){ int l=strlen(a); tire *p=&root; for(int i=0;i<l;i++){ int c=a[i]-'a'; p=p->next[c]; if(p==NULL) return 0; } return p->n; } int main(){ char a[20]; for(int i=0;i<26;i++) root.next[i]=NULL; while(gets(a)&&a[0]!='\0'){ in(a); } while(~scanf("%s",a)){ printf("%d\n",ask(a)); } return 0; }
最新回复(0)