算法
文章平均质量分 76
nkorange
总要去面对
展开
-
POJ1025
这题主要是比较麻烦,要考虑的比较全面。题目大意是:有一栋楼,楼有10层,每层有10个房间,层与层之间用电梯连接,电梯每五秒搭载一个人。有序号为A到Z的26个人可能要来访问这栋楼,每个人可以访问一个或多个房间,并以房间号的升序对房间进行访问。然而每个房间里同一时刻只能有一个人,若有多个人要访问同一房间,则以字母升序的优先级进行访问,编号为A的人有最高的优先级,Z的优先级最低。不能立即访问房间的人在房间门前以字母升序优先级排成队列进行等待。对于电梯的使用也是一样的按字母优先级。我的思路是以优先级降序的顺序对每个原创 2011-03-02 21:10:00 · 1708 阅读 · 0 评论 -
二叉树非递归使用常数存储空间遍历
主要使用了一个方向值orien,记录在二叉树中搜索时的路径方向,比如由父节点到左子树时orien值为1,这样按照严格的行走规则,在一个while循环里就能遍历整棵树。 一个简单的例子: 一棵树为: 8 4 12 2 6 10 14 1 3 5 7 9 11 13 15 那么程序将采用一个相当于后序遍历的顺序对树原创 2011-04-13 23:52:00 · 1095 阅读 · 2 评论 -
原地归并排序--2013-06-02
问题描述:数组a[n],a[0]~a[m]和a[m+1]~a[n-1]两个子数组分别是有序的,其中m 源地址:http://www.geeksforgeeks.org/forums/topic/amazon-interview-question-for-software-engineerdeveloper-about-algorithms-arrays-28/ 我的思路:由于要原创 2013-06-02 23:33:39 · 519 阅读 · 0 评论 -
重温KMP算法
最近面试时被问到了有关字符串查找的问题,在此回顾一下《算法导论》上介绍的KMP算法。 KMP算法是一个用来解决在一个字符串里查找特定子字符串的算法,这个算法不需要回溯,因为它会对子字符串(下面称为模式串)进行一个预处理。根据预处理得到的信息可以在进行模式串匹配时获取下一个跳转匹配位置,具体如下。 比如我们有模式串:P=abcabd,有目标串:T=aaabcabgccdddd(P原创 2013-06-06 22:32:54 · 535 阅读 · 0 评论 -
后缀数组的DC3构造法
本文的大部分内容都是在理解了这篇文章的大部分内容后而写:http://www.cppblog.com/superKiki/archive/2010/05/15/115421.aspx 在字符串相关的问题中,后缀数组是一种很有效的武器。 后缀数组至少可以解决如下一些问题(当然并不一定是所有下列问题的最优解法): 1. 在一个字符串中找出一个子串,这个子串出现至少2次(或者指定出现k次)原创 2013-07-11 23:22:15 · 3745 阅读 · 0 评论 -
最大乘积子数组
《编程之美》上有一道关于在长度为n的数组中找到n-1个元素乘积最大的题目,不过这并不是本文要讨论的。 本文讨论的是另一种情况,给定一个长度为n的浮点数组,找一个长度任意的子数组(子数组的元素在原数组中是连续存放的),这个子数组的乘积最大。 通常,找一个满足指定条件子数组都会使用动态规划。递归缩小问题规模的同时,保持问题的数目不会指数增长。不过,本文的这个问题中,情况稍复杂 一些,由于原创 2013-06-29 22:31:49 · 648 阅读 · 0 评论