摘要: 算法导论本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。本书专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。本书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。全书提供了900多个练习题和思考题以及叙述较为详细的实例研究。本书内容丰富,对本科生的数据结构课程和研究生的算法课程都是很实 阅读全文
posted @ 2012-06-10 22:26 止於至善 阅读(1753) 评论(2) 推荐(4) 编辑
摘要: USE `database`; /*Table structure for table `post` */ DROP TABLE IF EXISTS `post`; CREATE TABLE `post` ( `no` int(11) NOT NULL AUTO_INCREMENT COMMENT '序列号', `attach` varchar(16) DEFAULT NULL C... 阅读全文
posted @ 2017-01-14 07:28 止於至善 阅读(417) 评论(0) 推荐(0) 编辑
摘要: 打算搬家到CSDN,感觉用户多点,和大家交流方便些。 阅读全文
posted @ 2012-11-23 21:01 止於至善 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 在柱状图中找最大的矩形:给一组非负的整数来表示一个柱状图,设计一个算法找到最大面积的能适合到柱状图内的矩形。比如,对与这组数,1 2 3 4 1 ,有两种可能的方案,一种是适合到 2 3 4 内的矩形,面积是 2*3;另一种是适合到 3 4 内的矩形,面积是 3*2。你觉得能有O(n)算法吗?这是一道Google的面试题。下面给出我的解答方法,我的设定是所有柱状图的高度在0-10之间。 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 int MaxRectBarChart(ve 阅读全文
posted @ 2012-09-20 20:00 止於至善 阅读(1352) 评论(1) 推荐(0) 编辑
摘要: 昨天在电脑上安装了CentOS 6.2,为的是学习Linux和nginx服务器的配置,并学习阅读nginx的源码。Web服务器也称为WWW服务器,HTTP服务器,主要功能是提供网页浏览服务。主流的Web服务器有Apache,Nginx,Lighttpd,IIS等。到目前为止,Apache仍然是市场占有率最高的Web服务器,市场占有率超过60%。主要的Web服务器的市场占有率如下图所示:(来源:http://news.netcraft.com/archives/category/web-server-survey/)DeveloperJune 2012PercentJuly 2012Percen 阅读全文
posted @ 2012-07-29 21:29 止於至善 阅读(788) 评论(0) 推荐(0) 编辑
摘要: (一)文件操作篇1、creat(建立文件)头文件1 #include<sys/types.h>2 #include<sys/stat.h>3 #include<fcntl.h>定义函数1 int creat(const char * pathname, mode_tmode);函数说明参数pathname指向欲建立的文件路径字符串。creat()相当于使用下列的调用方式调用open()1 open(const char * pathname ,(O_CREAT|O_WRONLY|O_TRUNC));错误代码关于参数mode请参考open()函数。返回值cre 阅读全文
posted @ 2012-07-27 12:30 止於至善 阅读(11462) 评论(1) 推荐(4) 编辑
摘要: 给定两个序列X和Y,如果Z既是X的一个子序列又是Y的一个子序列,则称序列Z是X和Y的一个公共子序列。在最长公共子序列问题(LCS)中,给定了两个序列X=<x1,x2,…,xm>和Y=<y1,y2,…,yn>,希望找出X和Y的最大长度的公共子序列。最直观且容易想到的方法是枚举出X的所有子序列,然后逐一检查看其是否为Y的子序列,并随时记录所发现的最长子序列。这种方法的时间复杂度是指数级的,对于较长的序列来说是不实际的。LCS问题的最优子结构:若xm=yn,则zk=xm=yn且Zk-1是Xm-1和Yn-1的最长公共子序列;若xm≠yn且zk≠xm ,则Z是Xm-1和Y的最长公 阅读全文
posted @ 2012-07-25 13:10 止於至善 阅读(1700) 评论(10) 推荐(1) 编辑
摘要: 第十三章 红黑树首先说一下本章有一个地方的图有误,P168页的图,正确的图如下(case3有误,中文版):在Linux内核和STL中,都大量使用了红黑树这种数据结构,原因是红黑树的搜索、插入和删除效率都很高。红黑树是一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是RED(红色)或BLACK(黑色)。一棵红黑树有如下性质:(1)每个结点要么是红的,要么是黑的。(2)根结点是黑的。(3)每个叶结点,即空结点(NIL)是黑的。(4)如果一个结点是红的,那么它的俩个儿子都是黑的。(5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。树中每个结点有五个域:color, 阅读全文
posted @ 2012-06-15 20:24 止於至善 阅读(1385) 评论(0) 推荐(2) 编辑
摘要: 第十二章 二叉查找树前几章比较简单,都是数据结构里的简单内容,以前也都写过,这次就不浪费时间在这些上面了。直接写二叉查找树、红黑树。在二叉查找树上执行的基本操作的时间与树的高度成正比。对一棵含n个结点的完全二叉树,这些操作的最坏情况运行时间为O(lgn)。但是如果二叉查找树是含n个结点的线性链,则这些操作的最坏情况运行时间为O(n)。二叉查找树的基本操作有:遍历,查找,求最大值,求最小值,求直接前驱,求直接后继,插入,删除等。1、遍历根据二叉查找树的性质,可以用一个递归算法按排列顺序输出树中的所有关键字。这种算法称为中序遍历算法。因为对任一子树根的关键字在输出时介于左子树和右子树的关键字之间。 阅读全文
posted @ 2012-06-10 18:34 止於至善 阅读(1270) 评论(1) 推荐(0) 编辑
摘要: 第九章 中位数和顺序统计学9.2 以期望线性时间做选择上一讲是找出最小值,同时找出最大值最小值,以及找出次小值的问题。随意选择数组中第i小(大)的元素看起来要比找最小值的简单选择问题要复杂一些。但是令人惊奇的是,两种问题的渐近运行时间却是相同的,都是O(n)。算法导论上介绍了一种用来解决选择问题的分治算法,即RANDOMIZED-SELECT算法。本算法以快速排序算法的分割算法为基础,如同在快速排序中一样,此算法的思想也是对输入数组进行递归划分。但与快速排序不同的是,快速排序会递归处理划分的两边,而RANDOMIZED-SELECT只处理划分的某一边。这一差异在算法的分析中就体现出来了:快速排 阅读全文
posted @ 2012-06-07 22:42 止於至善 阅读(1564) 评论(0) 推荐(1) 编辑