
算法设计
文章平均质量分 75
roynee
这个作者很懒,什么都没留下…
展开
-
改良stack的push操作,使得从stack中获取最大元素的时间复杂度为O(1) [其实问题挺无聊]
思想: 在利用push建栈的过程中,边 “建栈” 边 "利用数组保留当前压栈后的最大的那个元素,即只需要比较数组中的前一个元素即可,若比前一个元素大,则保留该元素到数组中,否则保留数组中的前一个元素相同的值。" 则当前栈中的最大的元素即使该数组中的最后一个元素。时间复杂度为O(1)解决:g++ 编译环境/** main原创 2009-06-19 00:15:00 · 2126 阅读 · 0 评论 -
[GoF设计模式]Proxy模式和Strategy模式的C++实现
这个星期写写设计模式吧,一天两到三个,今天起个头儿。 今天要写的是代理模式(Proxy)和策略模式(Strategy),用C++做个简单的例子实现。 先不太规范了,一般的类就写在一个头文件中得了,连定义带实现,以后回过头来再看的时候,也能不麻烦点。呵呵。 还有以后出现要用“Rule of Three”的地方,先不做过细考虑,主要是侧重在模式本身。原创 2009-09-16 21:21:00 · 1001 阅读 · 0 评论 -
有关停车游戏的一个算法题
某网站有个停车游戏,有这么几台车,奥拓(16000元/台,停12小时 得7200元),乐骋(45000元/台,停12小时得18000元),Hammer(800000/台,停12小时32400元),AudiQ7(1200000元/台,停12小时46800元),Benz S600(2000000元/台,停12小时得75600元),Benz Bus(2500000元/台,停12小时得9360转载 2009-07-01 23:36:00 · 1184 阅读 · 0 评论 -
一道有关图论的题目
[问题描述] 给定一个有n个顶点的图G=(V,E),请设计一个算法计算G中两两连接的4个顶点(即四边形)的数目, 如果没有,输出NOT EXIST,说明你所使用的方法以及时间和空间复杂度。转载 2009-07-01 23:11:00 · 613 阅读 · 0 评论 -
利用后缀数组求字符串的最长重复子串的算法 利用二维数组求两个字符串的最长公共字串(动态规划)
[问题描述] 1- 求一个字符串中存在的最长的重复子串[后缀数组]2- 求两个字符串的最长公共字串 [动态规划] [问题解决] 1-利用 “后缀数组”(需排序) 求字符串中存在的最长的重复子串,要建立指针数组并通过qsort排序 时间复杂度是O(nlogn)主要开销在于排序的过程。 2原创 2009-07-02 00:22:00 · 2391 阅读 · 0 评论 -
最佳购物方案的题目
[问题描述]在一条街上有n个商店,每个商店有一种商品可卖,有数字代替商品名,商品都有价格,各个商店可卖同一种商品而价格可以不一样,现在又一个人要从街头走到结尾去购物,他手上有一张要购买的商品的清单,现在必须按照清单上的次序依次购买商品( 或者可以不按照清单顺序购买 ),求花费最小的购物方法; 例如 购物清单:(数字代替商品名) 2 2 5 1 商店情况: 商店 S1转载 2009-07-01 23:52:00 · 1161 阅读 · 0 评论 -
有关 Fabonacci 和 Fabonacci质数 数列的的一个问题
[问题描述]Fibonacci数列中,一个Fibonacci数如果与它之前的Fibonacci数均互质,则称为Fibonacci质数。第0个 Fibonacci质数为2,第1个为3,第2个为5。。。(Fibonacci数列为1, 1, 2, 3, 5, ...)。输入一个数K,则第K个Fibonacci质数所对应的序数是多少?(自0开始) [有关论坛里讨论的一些想法] 发信人:原创 2009-06-28 22:51:00 · 1254 阅读 · 0 评论 -
单链表逆置的递归与非递归算法 [简单的小算法练习]
[问题表述]单链表逆置的算法,不管是递归还是非递归的情况下,其实策略有多种,此处只列出其中一种 [问题解答] /* * main.cpp * * Created on: 2009-6-24 * Author: NeeSky */#include using namespace std;/** *Single Link List a原创 2009-06-25 00:40:00 · 3962 阅读 · 0 评论 -
使用位图法判断整形数组是否存在重复 (待续)
使用位图法判断整形数组是否存在重复 判断集合中存在重复是常见编程任务之一,当集合中数据量比较大时我们通常希望少进行几次扫描,这时双重循环法就不可取了。 位图法比较适合于这种情况,它的做法是按照集合中最大元素max创建一个长度为max+1的新数组,然后再次扫描原数组,遇到几就给新数组的第几位置上1,如遇到5就给新数组的第六个元素置1,这样下次再遇到5想置位时发现新数组的第转载 2009-06-26 20:42:00 · 1209 阅读 · 0 评论 -
有关回文数的一个问题
[问题表述]给定了一个字符串s 和一个最大修改次数max只能修改s中的字符,最多修改max次定义回文分数:如果s不是回文,则为0否则:若s长度是奇数,分数为1若s长度是偶数,分数为s的一半字串的回文分数+1 求能得到的最大回文分数 [思想]:见代码,通过循环(当然递归的方式也可以解决,总体是改进的折半的思想),已经解决,64-79行代码很重要原创 2009-06-23 00:06:00 · 737 阅读 · 0 评论 -
ACM-POJ 算法训练指南
ACM http://acm.pku.edu.cn/JudgeOnline/ 转自 北邮人论坛:namespace (dev c++) 初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3转载 2009-06-20 11:49:00 · 3219 阅读 · 1 评论 -
利用"线段树"相关算法解决有关数组的问题[待续]
(一)问题给定一个长度为n并且只含有非负整数的数组A,显然这个数组一共有n*(n+1)/2个区间( 每个区间至少有一个元素)。给定m个查询值K,对于每个查询值K,我们将每个区间最小 值与K做“差值”,“差值”的定义如下: 当最小值MINi不小于K时,则“差值”为MINi – K 否则“差值”为0 你的任务是求出对于每个查询值K时,n*(n+1)/2个“差值”的和。原创 2009-06-19 00:34:00 · 588 阅读 · 0 评论 -
那些无聊的字符串 [搬家]2009年06月13日
问题:设有n个正整数,将它们联接成一排,组成一个最小的多位整数。程序输入:n个数程序输出:联接成的多位数例如:n=2时,2个整数32,321连接成的最小整数为:32132,n=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355 解答: #include #include using namespace std原创 2009-06-19 00:23:00 · 735 阅读 · 0 评论 -
C#写的有关汇编指令的动态调度算法的仿真程序
指令在流水线中的执行过程可以分为指令的流出(IS),读操作数(RO),执行(EX)和写回结果(WR)四个阶段,其中IS,RO和WR所占用的时钟周期为1的时钟周期,EX所占用的时钟周期视功能部件而有所不同。动态流水线中,所有的指令在流出IS阶段是顺序的,但是在读操作数时(RO)时,只要指令运行所需要的资源满足并且没有数据阻塞,就应当允许指令乱顺序执行。在资源充足的情况下,尽可能早地原创 2009-06-20 10:00:00 · 1580 阅读 · 0 评论 -
有待练习的几道题 [待续]
(1)单链表逆序的递归和非递归算法 (2) 输出一个字符串的所有排列(注意 字符重复出现的问题)(3)“环形跑道比赛套圈”思想解决 判断单链表是否有环的问题。 这个思想源自 田径场长跑比赛中 跑得慢的被跑得快的套圈的问题。(4)大量无重复随机数的生成原创 2009-06-19 00:47:00 · 658 阅读 · 0 评论 -
开篇了,为了打发那些着实无聊的日子......[搬家]2009年06月13日
问题:一个N*N的矩阵,按照顺时针方向绕圈访问矩阵中的所有元素,起点为(0,0)元素。[这个问题可做相应的扩展,比如出发其实位置不为(0,0)时候,并且出发从非死角位置开始的时候外层圈绕完还可以在绕内层圈的时候还涉及到顺或者逆时针方向的问题。扩展要考虑的问题较多。 解答:g++环境运行 #include using nam原创 2009-06-19 00:19:00 · 667 阅读 · 0 评论 -
ACM-POJ1035 Spell checker [MyAnswer]
http://acm.pku.edu.cn/JudgeOnline/problem?id=1035 [问题描述] DescriptionYou, as amember of a development team for a new spell checking program, are towrite a module that will c原创 2009-06-21 02:01:00 · 1465 阅读 · 0 评论 -
基于顺序表长度计算的相关结点定位算法
[问题]:基于顺序表长度计算的相关定位算法要定位两条链表中交叉结点的位置:E(4) [lenLink1] [Common] (Link1)L(9)->A(8)-> B(7) ->C(6) ->D(5)-> E(4) ->G(3)原创 2009-06-19 00:37:00 · 1519 阅读 · 0 评论 -
[TB-Exam]求命中率的一个题
一个U,G的序列,每个位置的猜测根据其前N个字符的‘U’orG的相对数目中较大(相等时以U猜)的,求猜测的最终的命中率[解答]/********************************************************************* DESCRIPTION:TaoBao 20091012 BUPT** AUTHOR:原创 2009-10-12 23:01:00 · 725 阅读 · 0 评论