hdu1251统计难题+字典树
来源:互联网 发布:手机门窗设计软件 编辑:程序博客网 时间:2024/05/17 02:01
Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
banana
band
bee
absolute
acm
ba
b
band
abc
Sample Output
2
3
1
0
Author
Ignatius.L
给出一堆字符串1,再给一堆的字符串2。问字符串2在字符串1出现的前缀次数。。
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;#define LL long longconst int sigma_size=27;struct TireNode{ int pass; //int last; TireNode *son[sigma_size]; TireNode(){ pass=0; //last=0; for(int i=0;i<sigma_size;i++) son[i]=NULL; //memset(son,NULL,sizeof(son)); };};TireNode *root=new TireNode();int getnum(char a){ return a-'a'+1;}void Tire_insert(char *s){ int len=strlen(s); TireNode *in=root; for(int i=0;i<len;i++){ int c=getnum(s[i]); if(in->son[c]==NULL){ TireNode *newnode=new TireNode(); in->son[c]=newnode; } in=in->son[c]; in->pass++; } //in->last++;}int Tire_query(char *s){ int len=strlen(s); TireNode *in=root; for(int i=0;i<len;i++){ int c=getnum(s[i]); if(in->son[c]==NULL) return 0; in=in->son[c]; } return in->pass; //return in->last;}void Tire_remove(char *s){ int len=strlen(s); TireNode *in=root; for(int i=0;i<len;i++){ int c=getnum(s[i]); if(in->son[c]!=NULL){ in->pass--; // if(i==len-1) in->last--; in=in->son[c]; } else return; //节点不存在,直接返回 }}int dealTrie(TireNode* T){ //释放一颗字典树 if(T==NULL) return 0; for(int i=0;i<sigma_size;i++){ if(T->son[i]!=NULL) dealTrie(T->son[i]); } free(T); return 0;}char a[11];int main(){ while(1){ gets(a); if(strlen(a)==0) break; Tire_insert(a); } while(scanf("%s",a)!=EOF){ printf("%d\n",Tire_query(a)); } dealTrie(root);//豪爷说要有工程严谨性,释放内存 return 0;}
0 0
- hdu1251 统计难题 字典树
- 【字典树】 hdu1251 统计难题
- hdu1251 统计难题(字典树)
- 统计难题(hdu1251字典树)
- hdu1251 统计难题 (字典树)
- HDU1251统计难题(字典树)
- hdu1251统计难题(字典树)
- Hdu1251 - 统计难题 - 字典树
- hdu1251 统计难题 【字典树】
- HDU1251 统计难题【字典树】
- 【字典树】HDU1251统计难题
- hdu1251 统计难题 字典树
- hdu1251 统计难题 字典树
- hdu1251统计难题+字典树
- HDU1251 统计难题【字典树】
- hdu1251 统计难题(字典树)
- hdu1251统计难题(字典树)
- HDU1251 统计难题 解题报告--字典树
- 8. String to Integer (atoi)
- linux 各命令字练习
- 找到二叉树中的最大搜索二叉树
- Ubuntu12.04 vim上安装taglist
- OSGEARTH初探
- hdu1251统计难题+字典树
- Android 系统默认关闭数据流量
- 8位灰度图像BMP的保存
- CSS3 animation-- 用animate.css重写一个带有回弹效果的模态对话框(2)
- 每天进步一点点...... 开场白的一篇文章
- 黑拐子相关
- Android编码规范指导
- Kettle 连接 Oracle 问题总结
- 如何提高代码的健壮性