字典树
来源:互联网 发布:Java医药管理系统 编辑:程序博客网 时间:2024/05/22 10:25
E - 温习字典树
Time Limit:2000MS Memory Limit:65535KB 64bit IO Format:%I64d & %I64uDescription
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
注意:本题只有一组测试数据,处理到文件结束.
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
Sample Input
bananabandbeeabsoluteacmbabbandabc
Sample Output
2310
数据结构指针的处理
<pre name="code" class="cpp">#include<stdio.h>#include<stdlib.h>#include<string.h>struct Tree{int d;Tree *next[26];}r;void creat(char *s){Tree *p = &r,*q;int l = strlen(s);for(int i=0;i < l;i ++){int m = s[i] - 'a'; if(p->next[m]==NULL){q = (Tree *)malloc(sizeof(r));for(int j = 0;j<26;j++){ q->next[j]=NULL; } p->next[m] = q; q->d=1; p=q; } else { p->next[m]->d++; p = p->next[m]; } }}int find(char *s){Tree *p = &r;int l = strlen(s);for(int i = 0;i < l;i ++){int m =s[i]-'a';if(p->next[m]==NULL){return 0;break; } p=p->next[m];}return p->d;}int main(){char a[20],b[20];for(int i=0;i<26;i++){r.next[i]=NULL;}while(gets(a)&&a[0]!='\0'){creat(a);}while(gets(b)){printf("%d\n",find(b));}}
0 0
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树。。
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 字典树
- 应届IT研究生面试自我介绍中英文模板
- nginx+tomcat 负载均衡实验
- 223 小明的烦恼
- php发送smtp邮件
- Java SE 学习---继承与多态
- 字典树
- 224 灯光师小明
- c#应用程序初探
- Capturing self strongly in this block is likely to lead to a retain cycle
- 初探Cocos2dx与TexturePacker使用。
- 一种Android数据请求框架
- hdu 2066 一个人的旅行 最短路径
- 236 心急的C小加
- js 过滤非法字符,只输入数字,文本框长度限制