trie hdu1251 字典树
来源:互联网 发布:安阳淘宝电商摄影 编辑:程序博客网 时间:2024/05/21 11:01
http://acm.hdu.edu.cn/showproblem.php?pid=1251
统计难题
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submission(s): 24595 Accepted Submission(s): 10161
Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
注意:本题只有一组测试数据,处理到文件结束.
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
bananabandbeeabsoluteacmbabbandabc
Sample Output
2310
#include<cstdio>#include<cstring> //memset函数的头文件#include<iostream>using namespace std;struct node{ int count; node *next[26]; node() //初始化数据 { memset(next,NULL,sizeof(next)); count=0; }};node *p,*root=new node();void insert(char *s)//插入新单词,即建立字典树{ int i,k; for(p=root,i=0; s[i]; ++i) { k=s[i]-'a'; if(p->next[k]==NULL) p->next[k]=new node();//判断是不是新节点,如果是分配创建一个新节点来存贮 ,即root的next域对应的k位置是否为空 p=p->next[k]; p->count++; //记录此字母出现的次数 }}int search(char *s) //寻找函数{ int i,k; for(p=root,i=0; s[i]; ++i) { k=s[i]-'a'; if(p->next[k]==NULL) break; //一旦查找不到,立即跳出 p=p->next[k]; } if(s[i]) return 0;//s[i]!=0表示中间 return p->count; //返回出现的次数}int main(){ char s[11]; while(gets(s),*s) insert(s); //一直读入数据,直到遇到空字符串 while(gets(s)) printf("%d\n",search(s)); return 0;}
0 0
- trie hdu1251 字典树
- hdu1251(字典Trie树)
- 字典树(Trie树)总结-hdu1251
- hdu1251 字典树trie 模板题
- 第十二章Trie树(字典树)解决HDU1251
- [复习][HDU1251]字典树(trie树)统计难题
- HDU1251 Trie树
- HDU1251(Trie树入门)
- trie树 hdu1251
- hdu1251(trie树)
- hdu1251 trie树
- HDU1251字典树
- hdu1251 字典树
- hdu1251之字典树
- hdu1251(字典树)
- hdu1251 字典树
- hdu1251 字典树
- hdu1251(字典树)
- iOS UITextView内容添加后,自动滚动到最后一行
- 【计蒜客系列】挑战难题30:合法分数的组合
- java面向对象内部类、抽象类、接口类
- 【Java设计模式】· 策略模式(Strategy Pattern)
- hdoj畅通工程
- trie hdu1251 字典树
- json数据解析
- Segment Game (hdu 5372 树状数组+离散化)
- Java基础总结之各个模块重要知识点
- 共享内存
- iOS推送小结
- 不敢死队问题
- 【HDOJ 5371】 Hotaru's problem
- Python代码运行助手