自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (10)
  • 收藏
  • 关注

原创 红黑树研究

性质红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NIL节点)。性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

2012-09-14 09:56:29 95

原创 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)

图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)

2012-09-14 09:36:40 5930

原创 图的基本操作(基于邻接表):图的构造,深搜(DFS),广搜(BFS)

#include #include #include using namespace std;#define MAXN 100struct ArcNode{ int adjVertex; //边到的顶点 ArcNode *next;};struct VNode{ string data; ArcNode *firstArc;};typedef VN

2012-09-14 09:35:48 5333

原创 求一个连通图的割点

题目:求一个连通图的割点,割点的定义是,如果除去此节点和与其相关的边,图不再连通,描述算法。分析:1. 最简单也是最直接的算法是,删除一个点然后判断连通性,如果删除此点,图不再连通,则此点是割点,反之不是割点(图的连通性一般通过深搜来判定,是否能一次搜索完 全部顶点);2. 通过深搜优先生成树来判定。从任一点出发深度优先遍历得到优先生成树,对于树中任一顶点V而言,其孩子节点

2012-09-14 09:35:14 2101

原创 网易有道笔试:求连通图的割点

题目:求一个连通图的割点,割点的定义是,如果除去此节点和与其相关的边,图不再连通,描述算法。分析:1. 最简单也是最直接的算法是,删除一个点然后判断连通性,如果删除此点,图不再连通,则此点是割点,反之不是割点(图的连通性一般通过深搜来判定,是否能一次搜索完 全部顶点);2. 通过深搜优先生成树来判定。从任一点出发深度优先遍历得到优先生成树,对于树中任一顶点V而言,其孩子节点为邻接点。由深度优先生成

2012-09-14 09:34:38 326

原创 一串首尾相连的珠子(m个),有N种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短

#include using namespace std;#define N 3bool GetMinlen(int *a,int m,int &shortHead,int & shortlen){ int start=0,end = 0; int countColor = 0; int *colorArray = new int[N]; shortlen = m; sho

2012-09-14 09:33:40 6750

原创 求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}

问题描述:给出一个数列,找出其中最长的单调递减(或递增)子序列。解题思路:动态规划。假设0到i-1这段数列的最长递减序列的长度为s,且这些序列们的末尾值中的最大值是t。对于a[i]有一下情况:(1) 如果a[i]比t小,那么将a[i]加入任何一个子序列都会使0到i的最长单调序列长度变成s+1,这样的话,在0到i的数列中,长度为s+1的递减子序列的末尾值最大值就是a[i];(2) 如

2012-09-14 09:32:21 3071

原创 有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接,问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。

有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接,问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。分析一下,将各个字符串作为一个节点,首尾链接就好比是一条边,将两个节点连接起来,于是问题就变成一个有关图的路径长度的问题。链接所得的字符串最长长度即为从图的某个节点出发所能得到的最长路径问题,与最短路径类似,可以应用弗洛

2012-09-14 09:30:35 2859

原创 输入一个正数n,输出所有和为n连续正数序列。

例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。分析:这是网易的一道面试题。#include using namespace std;void findSumSear(int n){ int small = 1,big = 2; int mid = (n+1)/2; int sum = small+big; if(

2012-09-14 09:27:54 3943

原创 输入一个字符串,打印出该字符串中字符的所有排列。

例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。分析:这是一道很好的考查对递归理解的编程题,因此在过去一年中频繁出现在各大公司的面试、笔试题中。#include #include #include using namespace std;void Perm(char *array,int pos,int

2012-09-14 09:27:49 2123

原创 如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。

题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们的最长公共子串,则输出它们的长度4,并打印任意一个子

2012-09-14 09:27:45 8149

原创 题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。

#include #include using namespace std;void PushToButtom(stack *s,int o){ if(s->empty()) { s->push(o); return; } else { int o2 = s->top(); s->pop(); PushToButtom(s,o); s->push(o2)

2012-09-14 09:27:40 3196

原创 n个骰子的点数

把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。#include #include void SumProbabilityOfDices(int number, int* pProbabilities);void SumProbabilityOfDices(int original, int current, int value, int

2012-09-14 09:27:11 571

转载 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)

看上去似乎任何已知的算法都无法做到,如果谁做到了,那么所有的排序方法:QuickSort,ShellSort,HeapSort,BubbleSort等等等等,都可以扔掉了,还要这些算法干吗阿,呵呵。不过实际上,在数字范围有限制的情况下,是有一个这样的算法的,只需要用一个数组记录每个数字出现次数就可以了。假定你的数字范围在0到65535范围之内,定义一个数组count[65536](这个

2012-09-04 09:16:28 2470 1

原创 一个数组是由一个递减数列左移若干位形成的,比如{4,3,2,1,6,5}是由{6,5,4,3,2,1}左移两位形成的,在这种数组中查找某一个数。

采用二分查找#include using namespace std;int binarySearch(int *a,int first,int last,int value){ int mid = first + (last-first)/2; if(a[mid] == value) return mid; else if(a[mid]<value) { return

2012-09-04 09:11:53 1776

原创 求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}

问题描述:给出一个数列,找出其中最长的单调递减(或递增)子序列。解题思路:动态规划。假设0到i-1这段数列的最长递减序列的长度为s,且这些序列们的末尾值中的最大值是t。对于a[i]有一下情况:(1) 如果a[i]比t小,那么将a[i]加入任何一个子序列都会使0到i的最长单调序列长度变成s+1,这样的话,在0到i的数列中,长度为s+1的递减子序列的末尾值最大值就是a[i];(2) 如

2012-09-03 21:54:08 99

原创 四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())

回溯法可以用来求解排列组合问题回溯法框架void backtrack (int t){ if (t>n) output(x); else for (int i=f(n,t);i<=g(n,t);i++) { x[t]=h(i); if (constraint(t)&&bound(t)

2012-09-03 20:56:11 1373

原创 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值

一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值  比如{3,2,4,3,6}可以分成{3,2,4,3,6} m=1;   {3,6}{2,4,3} m=2  {3,3}{2,4}{6} m=3 所以m的最大值为3 #include using namespace std;int testShare(int *a,int n,int m,int

2012-09-03 20:36:37 2410

原创 一串首尾相连的珠子(m个),有N种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短

#include using namespace std;#define N 3bool GetMinlen(int *a,int m,int &shortHead,int & shortlen){ int start=0,end = 0; int countColor = 0; int *colorArray = new int[N]; shortlen = m; sho

2012-09-03 15:51:13 150

原创 设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。

#include #include using namespace std;#define MAXN 100struct Data{ int data; int minData;};class MinStack{public: Data **data; int top; int size;public: MinStack() { size =MAXN;

2012-09-03 13:32:22 2538

原创 网易有道笔试:求连通图的割点

题目:求一个连通图的割点,割点的定义是,如果除去此节点和与其相关的边,图不再连通,描述算法。分析:1. 最简单也是最直接的算法是,删除一个点然后判断连通性,如果删除此点,图不再连通,则此点是割点,反之不是割点(图的连通性一般通过深搜来判定,是否能一次搜索完 全部顶点);2. 通过深搜优先生成树来判定。从任一点出发深度优先遍历得到优先生成树,对于树中任一顶点V而言,其孩子节点为邻接点。由

2012-09-03 11:31:05 119

原创 图的基本操作(基于邻接表):图的构造,深搜(DFS),广搜(BFS)

#include #include #include using namespace std;#define MAXN 100struct ArcNode{ int adjVertex; //边到的顶点 ArcNode *next;};struct VNode{ string data; ArcNode *firstArc;};typedef VN

2012-09-03 10:38:33 103

原创 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)

#include #include #include using namespace std;#define MAXN 100struct Graph{ string vertex[MAXN]; int matrix[MAXN][MAXN]; int vertexNum; int arcNum;};int Locate(Graph g,string str){ f

2012-09-03 09:33:05 113

原创 求一个二叉树中任意两个节点间的最大距离

求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。struct Node{ int value; Node *left; Node *right; int maxLeft; int maxRight;};int MaxDistance(Node

2012-09-02 16:51:37 1553

原创 有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接,问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。

有n个长为m+1的字符串,如果某个字符串的最后m个字符与某个字符串的前m个字符匹配,则两个字符串可以联接,问这n个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。分析一下,将各个字符串作为一个节点,首尾链接就好比是一条边,将两个节点连接起来,于是问题就变成一个有关图的路径长度的问题。链接所得的字符串最长长度即为从图的某个节点出发所能得到的最长路径问题,与最短路径类似,可以应用

2012-09-02 15:48:51 207

性能测试工具sysbench

sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下操作都将以支持MySQL数据库为例进行。

2014-10-20

一步一步彻底实现红黑树,面试不再愁

手把手实现红黑树,一步一步彻底实现红黑树,面试不再愁。...

2014-09-26

stl源码剖析 stl源码剖析

stl源码剖析stl源码剖析stl源码剖析stl源码剖析stl源码剖析stl源码剖析stl源码剖析

2010-08-05

学生成绩管理系统(C++)

c++实现学生成绩管理 程序源码 vs2008

2010-07-18

操作系统课程设计 生产者消费者

操作系统课程设计 生产者消费者操作系统课程设计

2009-06-26

地铁自动控制系统需求分析 软件需求课程设计

包括E-R图 文档等 课程设计得优秀 任务书都有

2009-03-20

华为内部程序设计培训教材

华为内部程序设计培训教材 C++编码规范

2009-03-20

个人档案文件管理系统 汇编课程设计

个人档案文件管理系统 汇编课程设计 源代码及文档

2009-03-20

Ubuntu学习资料

Ubuntu学习资料Ubuntu学习资料Ubuntu学习资料Ubuntu学习资料Ubuntu学习资料

2009-01-09

空空如也

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

TA关注的人

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