随笔分类 -  数据结构

KMP 模板
摘要:好久没写算法类程序了 ,总觉得脑子有点秀逗了,拿个kmp练练,慢慢找回状态 1 #include<stdio.h> 2 #include<string.h> 3 4 #define MAXN 1000 5 6 int Kmp_Map(const char* str, const char* pat) 7 { 8 if (NULL== str || NULL == pat) 9 return -1;10 11 int i, j;12 int next[MAXN];13 14 for (i = 1, j = -1; *(pat + i); j =... 阅读全文

posted @ 2012-10-23 21:11 ltang 阅读(612) 评论(0) 推荐(0)

最大流(push-relable)算法
摘要:预流推进算法(push-relable),时间复杂度O(V^2E) 1 // The push-relable algorithm code due to CLRS chapter 26 2 #include<iostream> 3 #include<list> 4 using namespace std; 5 const int N = 100; 6 int n; // vertex number 7 int e[N]; // residual flow of the vertex 8 int h[N]; // height of the vertex 9 int c 阅读全文

posted @ 2011-05-07 12:40 ltang 阅读(1727) 评论(0) 推荐(0)

红黑树C++实现
摘要:参考CLRS第二版(ch 13)#ifndef _C_RB_TREE_H_#define _C_RB_TREE_H_#define NULL 0template <class KeyT, class DataT>class RB_TREE{public: RB_TREE():root(NULL){} void Insert(KeyT key, DataT data = NULL) { rb_nodes *node, *tmp; node = root; tmp = NULL; while(node != NULL) { tmp = node; if(key<node-> 阅读全文

posted @ 2011-02-23 21:29 ltang 阅读(423) 评论(0) 推荐(0)

qsort 排序方法总结
摘要:本文中排序都是采用的从小到大排序1)对int类型数组排序[代码]2)对char类型数组排序(同int类型)[代码]3)对double类型数组排序(特别要注意)[代码]4)对结构体一级排序[代码]5)对结构体二级排序[代码]6)对字符串进行排序[代码]7)计算几何中求凸包的cmp[代码]注意一点,在进行比较的时候使用 *(int *)a - *(int *)b是有bug的,当a达到int的最小值(-2^31),b达到int的最大值(2^31 - 1),会溢出,结果就不对 阅读全文

posted @ 2010-12-06 21:21 ltang 阅读(1092) 评论(0) 推荐(0)

并查集
摘要:连续两天遇到并查集的问题,还是认真的看了下并查集的相关资料,再此总结一下:什么是并查集:  并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。常常在使用中以森林来表示。进行快速规整。主要操作的解释及代码:  1、初始树的建立,每个元素的父节点指向它本身[代码]  2、查找一个元素所在的集合,找到这个元素所在集合的根节点,判断两个元素是否属于同一集合,只要看他们所在集合的根节点是否... 阅读全文

posted @ 2010-12-02 09:36 ltang 阅读(215) 评论(0) 推荐(0)

Extend-KMP C++ 模板
摘要:#include <iostream>using namespace std;/************************************************************************//* Name: GetExtendNext/* Description: Get Next Array/* Parameter List: mode - substring/* next - array to get next[] of substring/* strlen - string len... 阅读全文

posted @ 2010-11-22 17:28 ltang 阅读(2113) 评论(0) 推荐(0)

字符串:KMP Eentend-Kmp 自动机 trie图 trie树 后缀树 后缀数组 个人代码示例
摘要:转自银河里的星星涉及到字符串的问题,无外乎这样一些算法和数据结构:自动机 KMP算法 Extend-KMP 后缀树 后缀数组 trie树 trie图及其应用。当然这些都是比较高级的数据结构和算法,而这里面最常用和最熟悉的大概是kmp,即使如此还是有相当一部分人也不理解kmp,更别说其他的了。当然一般的字符串问题中,我们只要用简单的暴力算法就可以解决了,然后如果暴力效率太低,就用个hash。当然hash也是一个面试中经常被用到的方法。这样看来,这样的一些算法和数据结构实际上很少会被问到,不过如果使用它们一般可以得到很好的线性复杂度的算法。老实说,我也一直觉得字符串问题挺复杂的,出来一个如果用暴力 阅读全文

posted @ 2010-11-19 22:16 ltang 阅读(955) 评论(0) 推荐(0)

Edmonds-Karp算法
摘要:建立在Ford-Fulkerson 方法上的增广路算法,与一般的Ford-Fulkerson 算法不同的是,它用广度搜索实现对增广路的寻找[代码] 阅读全文

posted @ 2010-11-17 12:18 ltang 阅读(1742) 评论(0) 推荐(0)

dinic算法
摘要:思想:a)原图中的点按照到到源的距离分“层”,只保留不同层之间的边的图b)根据残量网络计算层次图c)在层次图中使用DFS 进行增广直到不存在增广路d)重复以上步骤直到无法增广1-递归实现,效率略低[代码]2- 非递归实现,效率较高[代码] 阅读全文

posted @ 2010-11-17 10:07 ltang 阅读(2174) 评论(0) 推荐(0)

BellmanFord C++(模板)
摘要:[代码]调用示例:[代码] 阅读全文

posted @ 2010-11-02 12:57 ltang 阅读(480) 评论(0) 推荐(0)

Dijkstra C++模板
摘要:[代码]调用示例:[代码] 阅读全文

posted @ 2010-11-02 09:56 ltang 阅读(1732) 评论(0) 推荐(0)

Floyd算法-所有顶点之间的最短路径(C++模板)
摘要:[代码]调用示例:[代码] 阅读全文

posted @ 2010-11-01 21:55 ltang 阅读(2339) 评论(0) 推荐(0)

堆排C++实现
摘要:template void HeapAdjust(Type* heap, size_t begin, size_t end, bool (*cmp)(const Type&,const Type&)) { for (size_t i = begin; i void HeapSort(Type* heap, size_t length, bool (*cmp)(const Type&, ... 阅读全文

posted @ 2010-10-26 10:46 ltang 阅读(401) 评论(0) 推荐(0)

导航