统计难题

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 65094    Accepted Submission(s): 22446

Problem Description
Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀).
 
Input
输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提问,每行一个提问,每个提问都是一个字符串.

注意:本题只有一组测试数据,处理到文件结束.

 
Output
对于每个提问,给出以该字符串为前缀的单词的数量.
 
Sample Input
banana
band
bee
absolute
acm
 
 
ba
b
band
abc
 
Sample Output
2
3
1
0
 
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
int tree[][],sum[];
char s[];
int num=;
void insert()
{
int root=,len,id;
len=strlen(s);
for(int i=;i<len;i++)
{
id=s[i]-'a';
if(tree[root][id]==)//字母之前没有出现过,插入一个新位置
tree[root][id]=++num;
sum[tree[root][id]]++;//保存前缀出现的次数
root=tree[root][id];//顺着字典树往下走
}
}
int search()
{
int root=,id,len;
len=strlen(s);
for(int i=;i<len;i++)
{
id=s[i]-'a';
if(tree[root][id]==)
return ;//字典树中没有这个前缀
root=tree[root][id];
}
return sum[root];
}
int main()
{
while(gets(s)&&strlen(s)!=)
{
insert();
}
while(cin>>s&&strlen(s)!=)
{
cout<<search()<<endl;
}
return ;
}

最新文章

  1. win2003+sql2005配置
  2. bzoj4204: 取球游戏
  3. MySQL重复数据
  4. ubuntu13 安装并配置ssh,交换密钥
  5. 使用C语言实现二维,三维绘图算法(1)-透视投影
  6. iOS 使用FMDB SQLCipher给数据库加密
  7. 在VS中关于MySQL的相关问题
  8. bzoj 2741: 【FOTILE模拟赛】L 分塊+可持久化trie
  9. hdoj 3746 Cyclic Nacklace【KMP求在结尾加上多少个字符可以使字符串至少有两次循环】
  10. C# Winform 双屏显示
  11. java学习之数组排序一:选择排序
  12. oracle 的服务器进程(PMON, SMON,CKPT,DBWn,LGWR,ARCn)
  13. Boost.Asio基础(五) 异步编程初探
  14. IOS开发之路二十一(UIWebView加载本地html)
  15. 前端 jQuery
  16. jvm(一):总体概述
  17. WPF宝典Url
  18. [leetcode]254. Factor Combinations因式组合
  19. Centos7下安装Docker[z]
  20. Python内置类型(4)--数值

热门文章

  1. ajax请求Controller,返回信息乱码问题
  2. java课堂第一次随机测试和课件课后动手动脑问题解决(2019-9-16 )
  3. 神机iPhone6停产,苹果产业链应该感谢它还是痛恨它?
  4. Golang基础之文件操作
  5. Day3-D-Protecting the Flowers POJ3262
  6. java使用zookeeper实现的分布式锁示例
  7. Wireshark安装失败或找不到网络接口问题
  8. (十)微信小程序---上传图片chooseImage
  9. 第十届蓝桥杯 RSA解密(C++/ java)
  10. P1087 有多少不同的值