统计难题(字典树 模版题)
来源:互联网 发布:江苏高考知乎 编辑:程序博客网 时间:2024/05/16 23:41
描述
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
输入
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
输出
对于每个提问,给出以该字符串为前缀的单词的数量.
样例输入
banana
band
bee
absolute
acm
ba
b
band
abc
band
bee
absolute
acm
ba
b
band
abc
#include<stdio.h>#define MAX 26 //字符集大小typedef struct TrieNode{ int nCount; struct TrieNode *next[MAX];}TrieNode;TrieNode Memory[1000000];int allocp=0;void InitTrieRoot(TrieNode **pRoot)//初始化{ *pRoot=NULL;}TrieNode *CreateTrieNode()//创建新结点{ int i; TrieNode *p; p=&Memory[allocp++]; p->nCount=1; for(i=1;i<MAX;i++) { p->next[i]=NULL; } return p;}void InsertTrie(TrieNode **pRoot,char *s)//插入{ int i,k; TrieNode *p; if(!(p=*pRoot)) p=*pRoot=CreateTrieNode(); i=0; while(s[i]) { k=s[i++]-'a';//确定branch if(p->next[k]) p->next[k]->nCount++; else p->next[k]=CreateTrieNode(); p=p->next[k]; }}int SearchTrie(TrieNode **pRoot,char *s)//查找{ TrieNode *p; int i,k; if(!(p=*pRoot)) return 0; i=0; while(s[i]) { k=s[i++]-'a'; if(p->next[k]==NULL) return 0; p=p->next[k]; } return p->nCount;}int main(){ char str[11]; TrieNode *Root=NULL; InitTrieRoot(&Root); while(gets(str)&&str[0]) { InsertTrie(&Root,str); } while(gets(str)) { printf("%d\n",SearchTrie(&Root,str)); } return 0;}
- 统计难题(字典树 模版题)
- hdu1251统计难题(字典树模版)
- 统计难题 【字典树模版】
- hdu 1251 统计难题(字典树模版)
- HDU 1251 统计难题(字典树模版)
- 统计难题(字典树)
- 统计难题(字典树)
- 统计难题 (字典树)
- 统计难题(字典树)
- 统计难题【字典树】
- 统计难题 字典树
- 统计难题(字典树)
- HDU - 1251 统计难题(字典树模板题)
- Hdu 1251-统计难题(字典树模板题)
- hdu1251-统计难题-字典树模板题
- hdu1251统计难题-字典树模板题
- hdu1251 统计难题(字典树)
- HDU 1251统计难题(字典树)
- Google推荐的15条军规:HTML5代码规范
- android 设备虚拟菜单键不显示
- 统计字符串中(大/小写)字母个数
- object c 图书管理系统
- 9duoj1014
- 统计难题(字典树 模版题)
- 鸟哥私房菜读书笔记【1】
- 【数组】14周项目五。字符串统计
- DataGridViewComboBoxColumn 可以让用户输入并自动匹配选项
- 关于寻找地外文明
- 黑马程序员---Java语言基础
- Sql Server 2008 char类型 与 EL表达式的冲突
- Android支持的尺寸类型
- Android 源代码 error Exited sync due to fetch errors…