
数据结构/算法
nomad2
<a href="http://www.fi
展开
-
算法导论 ch9 最大值与最小值
#include using namespace std;class Comparator {public: bool operator()(int a, int b) { count++; return (a } static int count;};int Comparator::count =原创 2010-01-18 22:36:00 · 659 阅读 · 0 评论 -
算法导论 ch13 红黑树
1. Persistent dynamic sets 利用红黑树来保证每次插入或者删除的最坏运行情况为O(lgn). 例如: http://reactive-search.org/ http://rtm.science.unitn.it/reactive-search/thebook/node35.html 2. Treap 同时具有二叉查找树和最小堆原创 2010-02-23 23:25:00 · 698 阅读 · 0 评论 -
杨氏矩阵 Young Tableau
from: http://blog.youkuaiyun.com/michealmeng555/archive/2008/05/28/2489923.aspx 杨氏矩阵 Young Tableau前几天算法课上老师提到了一个数据结构--Young Tableau,只是简单的提了一下,没有仔细的讲解,于是自己在网上搜集了一些资料,并且加以研究,感觉杨氏矩阵(Young Tab转载 2010-01-06 23:01:00 · 1310 阅读 · 0 评论 -
算法导论 ch13 红黑树
#include #include #include using namespace std;enum COLOR { RED, BLACK};class TreeNode {public: int key; TreeNode *left; TreeNode *right; TreeNode *p; COLOR color; int le原创 2010-03-31 21:15:00 · 557 阅读 · 1 评论 -
算法导论 ch14 数据结构的扩张
支持动态集合上的动态顺序统计,扩充红黑树。 1. 检索具有给定排序的元素2. 确定一个元素的秩 #include #include #include using namespace std;enum COLOR { RED, BLACK};class TreeNode {public: int key; TreeNode *lef原创 2010-03-31 22:01:00 · 683 阅读 · 0 评论 -
算法导论 ch18 B树
刚发现linux的一个文件系统BTRFS,采用的是B+树,link是:https://btrfs.wiki.kernel.org/index.php/Main_Page, 1. Btrfs(通常念成Butter FS),是由Oracle于2007年宣布并进行中的copy-on-write文件系统。目标是取代Linux目前的ext3文件系统,改善ext3的限制原创 2010-04-03 16:03:00 · 901 阅读 · 0 评论 -
算法导论 ch19 二项堆
1. 使用插入节点构造二项堆的代码如下: #include #include using namespace std;const int MAXVALUE = 10000;// 二项树节点类class BinoTreeNode {public: BinoTreeNode(int _key = 0, int _degree = 0) : key(_key),原创 2010-04-03 22:59:00 · 1133 阅读 · 0 评论 -
算法导论 ch21 脱机最小值问题
TBW原创 2010-04-04 10:42:00 · 1301 阅读 · 0 评论 -
Trie
程序修改自 http://zh.wikipedia.org/wiki/Trie 1. #include #include #include using namespace std;extern vector tokenize(const string& src, string tok, bool trim = false, string null_subst = ""原创 2010-04-03 11:30:00 · 614 阅读 · 0 评论 -
算法导论 ch22 图的基本算法
1. 图的表示:邻接矩阵,邻接表2. 图的遍历:广度优先遍历,深度优先遍历(非递归)3. 注:BFS通常用于从某个源节点开始,寻找最短路径距离,DFS通常作为另一个算法的一个子程序。 1) Edge.h #ifndef EDGE_H_#define EDGE_H_#include using namespace std;class Edge {publi原创 2010-04-05 22:00:00 · 881 阅读 · 0 评论 -
算法导论 ch23 最小生成树 Kruskal
1. Kruskal 实现 1) MSTEdge.h#ifndef MSTEDGE_H_#define MSTEDGE_H_#include using namespace std;/* * Edge class for MST */class MSTEdge {public: int from; int to; int weight;p原创 2010-05-16 15:05:00 · 597 阅读 · 0 评论 -
算法导论 ch23 最小生成树 Prim
/* * get the MST using Prim algorithm * sv : start vertex */void AdjMatrixGraph::mst_prim(int sv){ // the min distance to the current MST int *d = new int[v]; // the parent in the MST原创 2010-05-16 16:17:00 · 765 阅读 · 1 评论 -
算法导论 ch23 最小生成树 问题的拓展
refer to 最小生成树问题的拓展, http://wenku.baidu.com/view/b9082d4ac850ad02de8041ac.html 1) 次最优的最小生成树 2) 最小度限制生成树 次最优的最小生成树代码如下: 1. add method AdjMatrixGraph::maxEdge2Vertexs/* * re原创 2010-05-16 16:19:00 · 1139 阅读 · 0 评论 -
算法导论 ch24 单源最短路径
Dijkstra algorithm implementation 1. add a new method to class AdjMatrixGraph /* * compute the shortest path from sv using Dijkstra algorithm * The input Graph is a directed graph, and the原创 2010-05-23 21:35:00 · 612 阅读 · 0 评论 -
算法导论 ch25 每对顶点间的最短路径
1. add method for class AdjMatrixGraph/* * All-Pairs Shortest Paths */void AdjMatrixGraph::floydWarshall() { unsigned int *d = new unsigned int[v * v]; unsigned int *p = new unsigned int[v原创 2010-05-23 21:37:00 · 678 阅读 · 0 评论 -
算法导论 ch14 数据结构的扩张 区间树
Robin的一个问题,记得在红黑树中的扩展中有种数据结构正好适合,今天找到了。 问题描述:有1万个号码,比如0-9999,现在有许多操作员要更新某个号码段的属性,假设号码就1个属性,要么是0要么是1。如:操作员A要把0-10的号码改成1,操作员B把5-15的号码改成0,操作员C又要把10-50改成1, ... ...问,如果要完成这样的要求,用什么数据结构保存号码段比较好,更新和拆原创 2010-05-22 12:30:00 · 734 阅读 · 0 评论 -
算法导论 ch29 线性规划 单纯形法
TBW原创 2010-05-22 12:58:00 · 1780 阅读 · 0 评论 -
算法导论 ch26 最大流
1. source codes/* * max flow, using Edmonds-Karp algorithm */void AdjMatrixGraph::maxFlow(int s, int t) { // f : storing the flow int *f = new int[v * v]; for (int i = 0; i < v; i++) {原创 2010-05-23 21:38:00 · 948 阅读 · 0 评论 -
算法导论 ch15 动态规划 任务调度
1. souce codes #include using namespace std;void fastestWay(int a[][6], int t[][5], int e[2], int x[2], int n) { int f[2][6]; int l[2][6]; int fstar = 0; int lstar = 0; f[0][0] = e[0原创 2010-05-30 11:49:00 · 1649 阅读 · 0 评论 -
算法导论 ch15 动态规划 矩阵链乘
1. source codes #include using namespace std;void matrixChainOrder(int p[], int n) { int *m = new int[n * n]; int *s = new int[n * n]; for (int i = 0; i < n; i++) { for (int j = 0; j原创 2010-05-30 11:56:00 · 670 阅读 · 0 评论 -
算法导论 ch15 动态规划 最长公共子序列
1. source codes #include using namespace std;typedef enum { LR = 0, UP = 1, LEFT = 2}DIRECTION;void printLCS(DIRECTION *b, char *X, int i, int j, int n) { if (i == 0|| j == 0) {原创 2010-05-30 13:19:00 · 669 阅读 · 0 评论 -
算法导论 ch16 贪心算法 霍夫曼编码
1. source codes #include #include using namespace std;class TreeNode {private: char data; int frq; TreeNode *left; TreeNode *right;public: TreeNode(char c = *, int f = 0, Tre原创 2010-05-30 16:12:00 · 1151 阅读 · 0 评论 -
算法导论 ch15 动态规划 最优二叉查找树
1. source code #include using namespace std;void optimalBST(double *p, double *q, int n) { const int COL = n + 2; double *e = new double[(n + 2) * COL]; double *w = new double[(n + 2) *原创 2010-05-30 14:23:00 · 913 阅读 · 0 评论 -
算法导论 ch15 动态规划 01背包
dynamic programming 0-1 Knapsack原创 2010-05-31 14:49:00 · 991 阅读 · 0 评论 -
CLRS video lectures
CLRS video link原创 2010-06-22 21:04:00 · 1035 阅读 · 0 评论 -
range minimum/maximum query
range minimum/maximum query转载 2011-02-15 22:12:00 · 1409 阅读 · 0 评论 -
算法导论 ch15 动态规划 最长公共子串
longest common substring原创 2011-05-08 20:15:00 · 945 阅读 · 0 评论 -
最长上升子序列
Longest Increasing Subsequence原创 2011-05-15 19:03:00 · 722 阅读 · 0 评论 -
动态规划 Help Jimmy
help jimmy原创 2011-05-21 14:22:00 · 1005 阅读 · 1 评论 -
利用蒙特卡洛算法求圆周率
Monte-Carlo PI转载 2011-04-07 19:52:00 · 9826 阅读 · 0 评论 -
利用蒙特卡罗方法求积分
Monte-Carl原创 2011-04-07 20:09:00 · 10531 阅读 · 1 评论 -
最大子段和
最大子段和原创 2011-05-25 16:41:00 · 634 阅读 · 0 评论 -
连续最大区域面积系列 POJ 2082,2559,2796,3494,1964,3250
连续最大区域面积系列转载 2011-05-28 12:09:00 · 1155 阅读 · 0 评论 -
字符串哈希函数
string hash原创 2011-05-28 20:21:00 · 692 阅读 · 0 评论 -
POJ 2503 输入处理
poj 2503 input原创 2011-05-28 20:23:00 · 682 阅读 · 0 评论 -
栈的单调性 POJ 3250
POJ 3250原创 2011-05-28 11:59:00 · 751 阅读 · 0 评论 -
k-flat sequence
k-flat sequence A sequence {ai}is called k-flat if for any twoconsecutive elements aiand ai+1, the following holds true: |ai- ai+原创 2011-06-11 17:11:00 · 719 阅读 · 0 评论 -
子集生成与一般组合
1. 增量构造 #include using namespace std;#define N 1001int rcd[N];int used[N];int num[N];int n;void subset(int l){ for(int i = 0; i < l; i++) { cout原创 2011-06-12 11:49:00 · 611 阅读 · 0 评论 -
枚举排列
1. 1-N 全排列 #include using namespace std;#define N 1001int rcd[N];int used[N];int num[N];int n;void permutation(int l){ if(l == n) { for(int i = 0原创 2011-06-12 10:40:00 · 820 阅读 · 0 评论 -
N皇后问题
采用递归回溯法 #include using namespace std;#define N 1001int rcd[N];int n;void search(int l){ static int count = 0; if(l == n) { count++;原创 2011-06-12 17:41:00 · 750 阅读 · 0 评论