hdu1251 字典树trie 模板题
2024-09-30 07:42:05
//字典树模板题.题意:给一个库,每次查询,求以之为前缀的单词数量。
#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;
}
最新文章
- [LeetCode] Multiply Strings 字符串相乘
- hashlib 和 hmac
- UnixC学习小结
- 急!JDBC问题,发生通信错误。错误位置:Reply.fill()。消息:数据不足。 ERRORCODE=-4499, SQLSTATE=08001
- 去掉mysql数据库字段中的个别字符
- hdu1248完全背包
- ios 简单的倒计时验证码数秒过程实现
- SQLServer组件
- ACCESS自动编号重新从1开始
- openfire消息通知推送
- Boostrap 模态框 水平垂直居中问题
- Qt判断和打开进程(windows端),运行,检测,中止
- 如何配置web服务器
- 计时器chronometer补充
- 【PHP系列】PHP组件详解
- 201521123098 《Java程序设计》第13周学习总结
- 微信小程序开发的游戏《拼图游戏》
- win10下安装PHP_CodeSniffer 检查编码规范
- c++入门之类——进一步剖析
- VS2010 正在创建“Debug\test2.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
热门文章
- abp viewmodel的写法
- PAT (Advanced Level) Practise - 1099. Build A Binary Search Tree (30)
- bootstrap 两端对齐的导航
- awk日志分割
- 118. Pascal&#39;s Triangle@python
- js的工厂模式
- 牛客网NOIP赛前集训营-普及组(第二场)和 牛客网NOIP赛前集训营-提高组(第二场)解题报告
- linux uptime-查看Linux系统负载信息
- php各种主流框架的优缺点总结
- datetime模块,random模块