博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdoj1251-统计难题 【字典树】
阅读量:6326 次
发布时间:2019-06-22

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

 

统计难题

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)

Total Submission(s): 19902    Accepted Submission(s): 8720

Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
 
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.
注意:本题只有一组测试数据,处理到文件结束.
 
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
 
Sample Input
banana
band
bee
absolute
acm
 
ba
b
band
abc
 
Sample Output
2
3
1
0
 
思路:字典树
代码:
1 #include 
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 10 #define MAX 0x7fffffff11 12 struct node{13 node* word[26];14 int n;15 node(){16 for(int i=0;i<26;i++) word[i]=NULL;17 n=1;18 }19 }*root;20 21 void Insert(char* s);22 int Find(char* s);23 24 int main(){25 //freopen("D:\\input.in","r",stdin);26 //freopen("D:\\output.out","w",stdout);27 char tmp[20];28 root=new node;29 while(gets(tmp),strlen(tmp)){30 Insert(tmp);31 }32 while(gets(tmp)!=NULL){33 printf("%d\n",Find(tmp));34 }35 return 0;36 }37 void Insert(char* s){38 int len=strlen(s);39 node *current=root,*new_node;40 for(int i=0;i
word[s[i]-'a']!=NULL){42 current=current->word[s[i]-'a'];43 current->n++;44 }else{45 new_node=new node;46 current->word[s[i]-'a']=new_node;47 current=current->word[s[i]-'a'];48 }49 }50 }51 int Find(char* s){52 int len=strlen(s);53 node *current=root;54 for(int i=0;i
word[s[i]-'a']!=NULL){56 current=current->word[s[i]-'a'];57 }else{ return 0; }58 }59 return current->n;60 }

转载地址:http://odgaa.baihongyu.com/

你可能感兴趣的文章
POJ 3280 DP
查看>>
装箱和拆箱
查看>>
golang 文件导入数据追加sheet
查看>>
switch 和 if...else if 的区别
查看>>
CSS3响应式布局之弹性盒子
查看>>
遇到问题集锦
查看>>
lnmp环境下piwiki网站流量分析工具的安装及配置
查看>>
saltstack自动化运维系列③之saltstack的常用模块使用
查看>>
shell编程系列18--文本处理三剑客之awk动作中的条件及if/while/do while/for循环语句...
查看>>
工控安全资料
查看>>
单元测试基础知识(转)
查看>>
ArrayList和LinkedList区别
查看>>
使用原理视角看 Git
查看>>
消息队列的面试题6
查看>>
最小割dp Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) E
查看>>
2018-2019-2 20175311 实验一《Java开发环境的熟悉》实验报告
查看>>
修改linux最大文件句柄数
查看>>
网络编程---tcp/udp协议
查看>>
jmeter3.2 版本完美实现Load Test报表
查看>>
再看python多线程------threading模块
查看>>