
数据结构
WellerZhao
熟练掌握C/C++、objective-c、java开发语言,专注于移动开发。
展开
-
解题报告-HDOJ-1251(字典树)
先给大家介绍一下什么是字典树。 字典树,顾名思义,是树的一种,哈希树的变种,优点是节省存储空间,优化查询效率。 数据结构: typedef struct _node { Node *child[26]; //指向下一个字母,因为英文字母只有26个 int n; //表示前缀数目 bool flag; //表示是否以改字母结尾(原创 2012-10-21 20:13:11 · 1038 阅读 · 0 评论 -
再谈Trie-字典树
前面我已经写了两篇关于字典树的博客,主要说的是动态建立字典树,详情请看:http://blog.youkuaiyun.com/monkey0le/article/details/8095918http://blog.youkuaiyun.com/monkey0le/article/details/8096105由于动态的字典树需要动态申请内存,而且每一组测试数据用完后都需要释放内存,很容易会造成泄漏和原创 2013-04-07 13:02:09 · 1131 阅读 · 0 评论 -
解题报告-HDOJ-1075(字典树)
这一题和1251都是字典树,题意是给出单词以及单词的翻译,最后让你用这些单词翻译给出来的语句。我的思路是,在每一个flag为true的单词保存对应的翻译,当翻译句子时,搜索字典树,当找到该单词、flag为true、并且该单词已经结束(很重要),就输出对应的翻译,否则,输出原来的单词。以下是实现代码:#include using namespace std;char str[30原创 2012-10-21 20:21:13 · 1124 阅读 · 0 评论 -
解题报告-HDOJ-1232(并查集)
并查集是一种树形数据结构,一般用来处理一些不相交集合的合并和查询。一般有如下操作:初始化:将集合中的所有点初始化为自身,表示该点为一个单独的集合。void Make_Set(int x){//初始化 for(int i=1;i<=x;i++) { father[i]=i; rank[i]=0; }} 查找:查找两原创 2012-09-16 19:48:17 · 612 阅读 · 0 评论 -
解题报告-HDU 4325 (树状数组+离散化)
题目大意:给你n朵花,m个查询,对于每一朵花给出这朵花的开花期,对于每一个查询,输出该时间的开花数。题目很简单,一看就知道线段树或者是树状数组就可以做了,但是数据范围是10的9次方,数组开不了这么大,于是离散化,把10的9次方的数离散成10的5次方,题目就可以解决了。我这里选择的是用树状数组,因为代码量少好多,因为在查询的时候,查询的时间不一定是开花期的端点,所以我把查询的时间保存下来原创 2013-08-22 10:27:03 · 847 阅读 · 0 评论