Trie树模板
2015-08-23 11:02
351 查看
//支持插入N个字符串,查询一个字符串是否存在,插入和查询都是o(length); #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<iostream> using namespace std; const int maxnode = 400000,sigma_size = 26;//最大结点数目,字符表的大小 const int maxn = 100; int ch[maxnode][sigma_size]; int val[maxnode]; struct Trie {int sz; Trie(){sz = 1;memset(ch[0],0,sizeof(ch[0]));} int idx(char c) {return c-'a';} void insert(char *s, int v) { int u = 0,n = strlen(s); for(int i = 0; i < n; ++i) { int c = idx(s[i]); if(!ch[u][c]){ memset(ch[sz],0,sizeof(ch[sz])); val[sz] = 0; ch[u][c] = sz++; } u = ch[u][c]; } val[u]=v; } int query(char *s) { int u = 0,n = strlen(s); for(int i = 0; i < n; ++i) { int c = idx(s[i]); if(!ch[u][c]){ return 0; } u = ch[u][c]; } return val[u]; } }t; char s[maxn]; int main() { return 0; }
相关文章推荐
- Managing the MAC Address Table
- 浅析Mysql InnoDB存储引擎事务原理
- MAC地址通告
- Leetcode: Binary Search Tree Iterator
- 幽默趣味:程序员如同妓女
- ASP.Net发布到IIS中出现错误: 处理程序"PageHandlerFactory-Integrated"在其模块列表中有一个错误模块"ManagedPipelineHandler"
- JDK动态代理
- LLDP(链路层发现协议)
- Android笔记三
- 分布式发布订阅消息系统 Kafka 架构设计
- 记录一些有用的网站
- Openstack kilo指南安装与实践(4)
- hibernate3第二章之JUNIT简单单元测试、CRUD、三种状态、主键生成策略
- 使用工具安装,运行,停止,卸载Window服务
- IP 广播转发
- Struts2学习(四)利用ajax异步上传
- 如何判断一个结构体的大小
- Apache Kafka开发入门指南(2)
- 黑马程序员-------Java笔记--------完数与质数
- Andrew Ng机器学习课程6