博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hdu 1251 统计难题
阅读量:6225 次
发布时间:2019-06-21

本文共 1740 字,大约阅读时间需要 5 分钟。

Description

Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).

Input

输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.

Output

对于每个提问,给出以该字符串为前缀的单词的数量.

Sample Input

bananabandbeeabsoluteacmbabbandabc

Sample Output

2310
1 #include
2 #include
3 #include
4 typedef struct Trie 5 { 6 int num; 7 struct Trie *next[26]; 8 bool exist; 9 }node,*trie;10 node *create()11 {12 node *a=(node *)malloc(sizeof(node));13 a->num=0;14 a->exist=false;15 memset(a->next,0,sizeof(a->next));16 return a;17 }18 void insert_(trie root,char *s)19 {20 trie a=root;21 char *p=s;22 int id;23 while(*p)24 {25 id=*p-'a';26 if(a->next[id]==NULL)27 {28 a->next[id]=create();29 }30 a=a->next[id];31 p++;32 a->num+=1;33 }34 a->exist=true;35 }36 int finds(trie root,char *s)37 {38 trie a=root;39 char *p=s;40 int id;41 while(*p)42 {43 id=*p-'a';44 a=a->next[id];45 ++p;46 if(a==NULL)47 {48 return 0;49 }50 }51 return a->num;52 }53 int main()54 {55 trie root=create();56 char str[12];57 bool judge=false;58 while(gets(str))59 {60 if(judge)61 {62 printf("%d\n",finds(root,str));63 }64 else65 {66 if(strlen(str)!=0)67 insert_(root,str);68 else69 judge=true;70 }71 }72 return 0;73 }

 

转载于:https://www.cnblogs.com/PrayG/p/5899650.html

你可能感兴趣的文章
Homebrew 1.9发布,将支持Linux与Windows 10
查看>>
Loader 使用文档
查看>>
Mozilla开发全新的公开网络API WebXR 来实现增强现实
查看>>
记一次获得3倍性能的Go程序优化实践
查看>>
“迁移策略+新容器运行时”应对有状态应用的冷热迁移挑战
查看>>
中国法院裁定:禁售部分型号苹果手机
查看>>
中台之上(一):重视业务架构,不要让“业务的归业务、技术的归技术”
查看>>
如何定义研发KPI:以团队速度为标准
查看>>
微软发布UWP Bridge项目将一切应用转为Windows应用
查看>>
联合国儿童基金会投资六家区块链初创企业,目标是解决“全球性挑战”
查看>>
期待已久的Firefox 39最终顺利发布
查看>>
世界政府峰会发布了《在区块链上构建超互联未来》文件
查看>>
实现TeX的算法:回首编程技术的过去三十年
查看>>
JUnit 5 Alpha版本简化了单元测试
查看>>
在2019年,如何成为更好的Node.js开发者?
查看>>
英特尔开源分布式深度学习平台Nauta,使用Kubernetes 和 Docker 平台运行
查看>>
【译】Apache Flink 容错机制
查看>>
Java字节码忍者禁术
查看>>
Firefox 50优化Electrolysis
查看>>
CNCF宣布Envoy项目正式毕业
查看>>