自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 非递归遍历二叉树

<br />//// 非递归中序遍历二叉树//void InOrder(struct Node* root){ if (root == NULL) return; struct Node *t = root; stack<struct Node*> s; while (t != NULL || !s.empty()) { while (t != NULL) { s.push(t); // 压栈 t =

2010-10-22 13:50:00 1942

原创 STL 中几个简单的数值算法实现

复习《STL源码剖析》,先把几个简单的算法自己实现一下。参数没有用迭代器,直接用整型数组。#include #include /* 应用于有序区间,判断 b 中的元素是否全部被 a 包含。默认为升序,如果为降序,改变比较符号即可*/bool includes(int* a, size_t al, int *b, size_t bl){ size_t i = 0, j = 0; while (i b[j]) return false; else if

2010-10-10 23:50:00 1985

转载 STL中的内存分配器

题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,STL中的allocator实现,以及一些特定于某种对象的内存管理等。最近阅读了一些内存管理实现方面的资料和源码,整理了一下,汇编成一个系列介绍一些常用的内存管理策略。1. STL容器简介STL提供了很多泛型容器,

2010-10-10 01:12:00 2232

原创 利用归并排序求数列中逆序对个数

参考了这篇文章:http://blog.csdn.net/MapReduce/archive/2007/05/20/1618515.aspx以前自己写的归并排序比较累赘,文章中的代码更有条理,而且计算逆序对个数只需要一行代码,是否对原数列进行排序也只需要决定是否取舍一行代码。#include #include int ans;void copy(int a[], int b[], int l, int r){ int i = l; while (i

2010-10-08 01:31:00 3137

原创 POJ 2485 : 最小生成树(kruskal+并查集)

DescriptionThe island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public highways. So the traffic is difficult in Flatopia. The Flatopian government is aware of this problem. They're planning to build some highways so that it w

2010-10-08 00:38:00 2323

原创 几个集合算法

上有相应的详细算法,我这里只写出了适用于普通指针的算法,思路和书上的一样。1. 交集void set_intersection(int a[], size_t al, int b[], size_t bl){ size_t i = 0, j = 0; while (i b[j]) j++; else { printf("%d ", a[i]); i++, j++; } } printf("/n");}

2010-10-07 21:55:00 1938

原创 POJ 1258 : 最小生成树(Prim)

DescriptionFarmer John has been elected mayor of his town! One of his campaign promises was to bring internet connectivity to all farms in the area. He needs your help, of course. Farmer John ordered a high speed connection for his farm and is going to sha

2010-10-06 13:23:00 3293 1

原创 最小生成树算法 :Prim算法 和 Kruskal 算法

加权无向图G的生成树的代价是该生成树的所有边的代价之和。下面两个算法都采用了贪心策略。Kruskal算法描述:设T是构造的最小生成树,初始为空。每次从图中选择一条权值最小的边,如果该边不能与T中已有的边形成环。则将该边加入T。如此循环直到T中含有N-1条边为止。N为节点个数。伪代码如下:T = ∅while (T中的边少于N-1条 & E不为空){ 从E中选择一条代价最小的边e; 从E中删除e; if ( e 不会在T中形成环路 ) 将e加入T;

2010-10-05 17:30:00 3785

原创 单源最短路径 :Dijkstra 算法

Dijkstra 算法用于解决有向图的最短路径问题。算法描述如下:1. 初始化原点的距离为0,到其他任意点到原点的距离为无穷大。2. 初始化已访问节点集合为空,未访问节点集合为所有节点。3. 在未访问节点集合中找到一个到已访问节点集合距离最近的节点(第一次找到的节点为原点),将该节点加入已访问节点。4. 更新该节点的邻居节点中处于未访问状态的节点的距离。5. 重复第三步。直到所有节点都已经访问。下面是一个最基本的Dijkstra 算法的c++实现,有向图存储采用的是邻接矩阵。const int MAXN =

2010-10-05 17:09:00 2148

转载 Range Minimum Query (RMQ)

解法一:Sparse Table (ST) algorithm对2k 的长度的子数组进行动态规划。我们将使用数组M[0, N-1][0, logN]进行保存,其中M[i][j]是以i 开始,长度为 2j的子数组的最小值的索引。一旦我们预处理了这些值,让我们看看怎样使用它们去计算RMQA(i, j)。思路是选择两个能够完全覆盖区间[i..j]的块并且找到它们之间的最小值。设k = [log(j - i + 1)].。为了计算RMQA(i, j) 我们可以使用下面的公式这个算法的总的时间复杂度为 const i

2010-10-04 00:44:00 2070

原创 Trend Micro 2011 笔试题

求一个字符串的最长不重复子串长度。如 "abcdefgd"的最长不重复子串为"abcdefg",长度为7。在做题的时候没带草稿纸,导致试卷上有很多涂改,而且还忘记处理字符串结尾部分。#include #include #include using namespace std;int search(char* str, int len){ map m; if (len (str[p1], p1)); while (p2 second; if (p2

2010-10-01 14:13:00 2073

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除