首页 > 代码库 > hdu 1251 统计难题
hdu 1251 统计难题
用到tire树;
基础应用
这里讲的挺详细的 点击打开链接
#include<cstdio> #include<cstring> #include<iostream> #define max 20 using namespace std; char w[6]; struct node{ bool a; int chile[26]; int q;//前缀出现次数 node(){ q=false; q=0; memset(chile,0,sizeof(chile)); } }t[500000]; int sz=1; void insert(char *w) { int len=strlen(w); int s=0; for(int i=0;i<len;i++) { int y=w[i]-'a'; if(t[s].chile[y]==0) { t[s].chile[y]=sz++; } s=t[s].chile[y];//下一个结点 t[s].q++; } t[s].a=1; } int show(char *w) { int len=strlen(w); int s=0; for(int i=0;i<len;i++) { int y=w[i]-'a'; if(t[s].chile[y]==0) return 0; s=t[s].chile[y]; } return t[s].q; } int main() { char s[50]; while(gets(s)) { int len=strlen(s); if(len==0) break; insert(s); } while(gets(s)) { printf("%d\n",show(s)); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。