HiHo Coder字典树 TrieTree
题目地址:http://hihocoder.com/problemset/problem/1014
不得不吐槽一下这个OJ,题目质量是很好的,但是提交代码后返回的信息也太少了吧!!!本机测试无误,提交后各种TLE。
#include <iostream>
#include <string>
#include <vector>
using namespace std; #define TREE_WIDTH 256
#define WORDLENMAX 10 class TrieNode {
public:
char val;
int count;
TrieNode *next[TREE_WIDTH];
TrieNode(char val, int count) {
this->val = val;
this->count = count;
for (size_t i = 0; i < TREE_WIDTH; i++)
{
this->next[i] = NULL;
}
}
~ TrieNode() {
for (size_t i = 0; i < TREE_WIDTH; i++)
{
if (this->next[i] != NULL) {
delete this->next[i];
}
}
}
}; int *insert(TrieNode *root, string &word) {
TrieNode *curr;
curr = root;
for (size_t i = 0; i< word.length(); ++i) {
if (curr->next[word[i]] == NULL) {
curr->next[word[i]] = new TrieNode(word[i], 0);
}
curr = curr->next[word[i]];
curr->count++;
} return 0;
} int serachTrie(TrieNode *root, string &word) {
TrieNode *curr = root; for (size_t i = 0; curr && i<word.length(); ++i) {
curr = curr->next[word[i]];
} if (!curr)
return 0;
else
return curr->count;
} int main() {
vector<string> vstr1, vstr2;
int n; TrieNode root(0, 0); cin >> n;
for (size_t i = 0; i < n; ++i) {
string str;
cin >> str;
vstr1.push_back(str);
} int m;
cin >> m;
for (size_t i = 0; i<m; ++i) {
string str;
cin >> str;
vstr2.push_back(str); } for (size_t i = 0; i < n; i++)
{
insert(&root, vstr1[i]);
} for (size_t i = 0; i < m; i++)
{
cout << serachTrie(&root, vstr2[i]) << endl;
} return 0;
}
HiHo Coder字典树 TrieTree的更多相关文章
- 012-数据结构-树形结构-哈希树[hashtree]、字典树[trietree]、后缀树
一.哈希树概述 1.1..其他树背景 二叉排序树,平衡二叉树,红黑树等二叉排序树.在大数据量时树高很深,我们不断向下找寻值时会比较很多次.二叉排序树自身是有顺序结构的,每个结点除最小结点和最大结点外都 ...
- 字典树(Trie Tree)
在图示中,键标注在节点中,值标注在节点之下.每一个完整的英文单词对应一个特定的整数.Trie 可以看作是一个确定有限状态自动机,尽管边上的符号一般是隐含在分支的顺序中的.键不需要被显式地保存在节点中. ...
- 初级字典树查找在 Emoji、关键字检索上的运用 Part-3
系列索引 Unicode 与 Emoji 字典树 TrieTree 与性能测试 生产实践 生产实践 我们最终要解决 Emoji 在浏览器和打印物上的显示一致. 进行了多番对比,,在显示效果和精度上,m ...
- 初级字典树查找在 Emoji、关键字检索上的运用 Part-2
系列索引 Unicode 与 Emoji 字典树 TrieTree 与性能测试 生产实践 在有了 Unicode 和 Emoji 的知识准备后,本文进入编码环节. 我们知道 Emoji 是 Unico ...
- 初级字典树查找在 Emoji、关键字检索上的运用 Part-1
系列索引 Unicode 与 Emoji 字典树 TrieTree 与性能测试 生产实践 前言 通常用户自行修改资料是很常见的需求,我们规定昵称长度在2到10之间.假设用户试图使用表情符号
- C++ TrieTree(字典树)容器的实现
最近研究了一下C++线程池,在网上看了一下别人的代码,写的很不错,参见:http://www.cnblogs.com/lidabo/p/3328646.html 其中,他用了STL的set容器管理线程 ...
- HihoCoder1366 逆序单词(字典树)
逆序单词 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在英文中有很多逆序的单词,比如dog和god,evil和live等等. 现在给出一份包含N个单词的单词表,其中每 ...
- trie字典树详解及应用
原文链接 http://www.cnblogs.com/freewater/archive/2012/09/11/2680480.html Trie树详解及其应用 一.知识简介 ...
- 算法导论:Trie字典树
1. 概述 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树. Trie一词来自retrieve,发音为/tr ...
随机推荐
- sql语句with as 和with(nolock)
当with和as一起用时,表示定义一个SQL字句 例: with sonword as ( select * from person ) select * from student where n ...
- mongodb高级应用
一. 高级查询 查询操作符 条件操作符:db.collection.find({"field":{$gt/$lt/$gte/$lte/$eq/$ne:value}}); 匹配所有 ...
- 阿里云ECS服务器配置(Ubuntu+JAVA+Tomcat+Mysql)
最近购买了阿里云的ECS服务器,就服务器的安装配置做简要的说明,也方便日后查看. 1.远程操作服务器 远程操作服务器可以使用putty工具,下载地址:http://pan.baidu.com/s/1q ...
- [转]ASP.NET Core 中的那些认证中间件及一些重要知识点
本文转自:http://www.qingruanit.net/c_all/article_6645.html 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系 ...
- Aptana+spket搭建EXTJS开发环境
1.下载 aptana studio.spket-1.6.23.ext-4.2.1.883.jsb2 其中:ext-4.2.1.883.jsb2这个比较重要 2.将spket-1.6.23解压后放到a ...
- [LeetCode] Strobogrammatic Number 对称数
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...
- IDEA 中生成 Hibernate 逆向工程实践
谈起 Hibernate 应该得知道 Gavin King 大叔,他构建了 Hibernate ,并将其捐献给了开源社区. Hibernate 对象关系映射解决方案,为面向对象的领域模型到传统的关系型 ...
- anaconda
python 集成环境 anaconda的使用 https://www.zhihu.com/question/35757251
- C语言学习 第十一次作业总结
作业总结 两次的作业,都是和指针有关.从第一次的作业开始,我就多次让同学们思考这个问题:为什么要用指针,为什么在函数的形参中要使用指针.如果能够想明白这2个问题,那么同学们应该会指针的了解就差不多足够 ...
- oracle db link的查看创建与删除
1.查看dblink select owner,object_name from dba_objects where object_type='DATABASE LINK'; 或者 select * ...