//字典树模板题.题意:给一个库,每次查询,求以之为前缀的单词数量。
#include<iostream>
#include<string>
#include<vector>
#include<cstdio>
#include<cstring>
using namespace std;
int tree[500000][27];
int w[500000]; //记录结点属性。
int numv=0; // 全局变量,记录顶点编号
int n;
void insert(string s) //建树 tree[u][i]:结点u的第i个孩子('a'为0,以此类推).
{ //值是i对应的孩子结点编号.这个要遍历孩子边,要遍历26次,
//否则添加vector<vector<> >,来保存边也可.
int u=0;
int len=s.size();
for(int i=0;i<len;i++)
{
if(tree[u][s[i]-'a']==0) //新建顶点
{
tree[u][s[i]-'a']=++numv;
}
u=tree[u][s[i]-'a']; //往下找
w[u]++;
}
}
int find(string s)
{
int u=0;
int len=s.size();
for(int i=0;i<len;i++) //找不到
{
if(tree[u][s[i]-'a']==0)
return 0;
u=tree[u][s[i]-'a'];
}
return w[u]; }
int main()
{
string s;
while(1) //一直读入字符串,到换行为止
{
cin>>s;
insert(s);
getchar();
if(cin.peek()=='\n')break;
}
while(cin>>s)
{
cout<<find(s)<<endl;
}
return 0;
}

最新文章

  1. [LeetCode] Multiply Strings 字符串相乘
  2. hashlib 和 hmac
  3. UnixC学习小结
  4. 急!JDBC问题,发生通信错误。错误位置:Reply.fill()。消息:数据不足。 ERRORCODE=-4499, SQLSTATE=08001
  5. 去掉mysql数据库字段中的个别字符
  6. hdu1248完全背包
  7. ios 简单的倒计时验证码数秒过程实现
  8. SQLServer组件
  9. ACCESS自动编号重新从1开始
  10. openfire消息通知推送
  11. Boostrap 模态框 水平垂直居中问题
  12. Qt判断和打开进程(windows端),运行,检测,中止
  13. 如何配置web服务器
  14. 计时器chronometer补充
  15. 【PHP系列】PHP组件详解
  16. 201521123098 《Java程序设计》第13周学习总结
  17. 微信小程序开发的游戏《拼图游戏》
  18. win10下安装PHP_CodeSniffer 检查编码规范
  19. c++入门之类——进一步剖析
  20. VS2010 正在创建“Debug\test2.unsuccessfulbuild”,因为已指定“AlwaysCreate”。

热门文章

  1. abp viewmodel的写法
  2. PAT (Advanced Level) Practise - 1099. Build A Binary Search Tree (30)
  3. bootstrap 两端对齐的导航
  4. awk日志分割
  5. 118. Pascal&#39;s Triangle@python
  6. js的工厂模式
  7. 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告
  8. linux uptime-查看Linux系统负载信息
  9. php各种主流框架的优缺点总结
  10. datetime模块,random模块