![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论
国境之南Fantasy
Coder
展开
-
<算法导论>第八章4 水壶(Kettle)
8-4 水壶 假设给定了n个红色的水壶和n个蓝色的水壶,它们的形状和尺寸都不相同。所有红色水壶中所盛水的量都不一样,蓝色水壶也是一样。此外,对于每个红色的水壶,都有一个对应的蓝色水壶,两者所盛的水量是一样的。反之亦然。 你的任务是将所盛水量一样的红色水壶和蓝色水壶找出来。为了达到这一目的,可以执行如下操作:挑选出一对水壶,其中一个是红色的,另一个是蓝色的:将红色水壶中倒满水;再将水转载 2012-04-25 22:44:00 · 2928 阅读 · 0 评论 -
算法导论22.4-2
动态规划...演示图(标记为数字的完全是为方便DFS时候的顺序,假设同22.3-2)(1)拓排,即可得类似P336,图22-7所示的从左到右的一个顺序关系,即上图下部分的样子(2)DP一下记P[v]为s到v的路径数,初始化为0把P[p]设为1P[v]=∑(u,v)belongs to EP[u]也就是说等于所有拓扑序前面的与之相边的顶点的P[]之和复杂度转载 2012-05-16 23:51:29 · 3476 阅读 · 0 评论 -
传说中的Stooge排序
using System;class Stooge{ public void sort(int[] data, int i ,int j) { if (data[i]>data[j]) { int t = data[i]; data[i] = data[j];转载 2012-04-23 22:40:26 · 873 阅读 · 0 评论 -
算法导论7-4思考题-快速排序中的堆栈深度-尾递归技术
The QUICKSORT algorithm of Section 7.1 contains two recursive calls to itself. After the call to PARTITION, the left subarray is recursively sorted and then the right subarray is recursively sorted.转载 2012-04-23 22:39:03 · 1790 阅读 · 0 评论 -
动态规划--01背包问题
问题: 0-1背包问题是一个经典的动态规划问题,问题定义如下:有n个物品,其重量分别为W={w1, w1, w3, ... wn},其价值分别为V={v1, v2, v3, .. vn}。现在要将这N个物品放入允许的最大重量为w的包中,问怎样选择物品能使包中的物品总价值最大。分析: 构建二维数组a[n][w],a[i][j]代表将1->i个物品放入允许的最大重量为j的包中,所能产生转载 2012-05-07 00:08:34 · 764 阅读 · 0 评论 -
动态规划--计划一个公司聚会
问题: Stewart教授是一家公司总裁的顾问,这家公司计划一个公司聚会。这个公司有一个层次结构;也就是,管理关系形成一棵以总裁为根的树。人事部给每个雇员以喜欢聚会的程度来排名,这是一个实数。为了使每个参加者都喜欢这个聚会,总裁不希望一个雇员和他(她)的直接上司同时参加。Stewart教授面对一颗描述公司结构的树,使用了10.4节描述的左子女、右兄弟表示法。树中每个节点除了包含指针,还包含转载 2012-05-06 18:25:16 · 2225 阅读 · 0 评论 -
动态规划--整齐打印
问题: 考虑在一个打印机上整齐地打印一段文章的问题。输入的正文是n个长度分别为L1、L2、……、Ln(以字符个数度量)的单词构成的序列。我们希望将这个段落在一些行上整齐地打印出来,每行至多M个字符。“整齐度”的标准如下:如果某一行包含从i到j的单词(i<j),且单词之间只留一个空格,则在行末多余的空格字符个数为 M - (j-i) - (Li+ …… + Lj),它必须是非负值才能让该行容纳这转载 2012-05-06 17:54:09 · 1171 阅读 · 0 评论 -
【转帖】双调欧几里德旅行商问题求解思想描述
一、问题介绍:欧几里得旅行商问题是指:对于给定平面上的n个点,确定一条连接各点的、闭合的最短曲线这个问题是NP完全问题。Bitonic旅行路线问题是欧几里得旅行商问题的简化,这种旅行路线从最左边开始,严格地由左至右到最右边的点,然后再严格的由右至左回到开始点,求最短的路径长度。设计一个确定最优Bitonic旅行路线的O(n2)时间算法。假设不存在x坐标相同的点。二、算法分析:转载 2012-05-06 16:55:23 · 2561 阅读 · 0 评论 -
动态规划--双调欧几里得旅行商问题
问题描述: 欧几里得旅行商问题是对平面上给定的n个点确定一条连接各点的最短闭合旅程的问题。如图(a)给出了一个7个点问题的解。这个问题的一般形式是NP完全的,故其解需要多于多项式的时间。 J.L. Bentley 建议通过只考虑双调旅程(bitonic tour)来简化问题,这种旅程即为从最左点开始,严格地从左到右直至最右点,然后严格地从右到左直至出发点。下图(b)显示了同样的7转载 2012-05-06 18:03:05 · 2751 阅读 · 0 评论 -
算法导论 习题5.2-2
在HIRE-ASSISTANT中,假设应聘者以随机的顺序出现,正好雇用两次的概率是多少? 首先我们有三个观察结论:(1) 1号助理总是会被雇用;(2) 最佳助理(即rank为n的助理)总是会被雇用;(3) 最佳助理不可能是1号助理,因为那样将只能刚好雇用一次。在使HIRE-ASSISTANT刚好雇用两次的序列中,一号助理必然有rank=i设E转载 2012-04-18 23:40:19 · 2702 阅读 · 0 评论 -
算法导论 5.1-2
一:描述random(a, b)过程的一种实现,它只调用random(0,1)。作为a和b的函数,你的程序期望运行时间是多少?Random(a,b)需满足的条件:1)a、b之间的元素是等概率出现的2)其概率=1/(b-a+1)以下解题思路仅实现了---等概率出现,至于得到的概率解析:1·Random(0,1)可以等概率产生0、1,如果将(b-a+1)写成二进制形式,则可以用转载 2012-04-18 22:08:05 · 1444 阅读 · 0 评论 -
算法导论11.1-4
Q:我们希望通过利用在一个非常大的数组上直接寻址的方式来实现字典。开始时,该数组中可能包含废料,但要对整个数组进行初始化是不实际的,因为该组的规模太大。请给出在大数组上实现直接寻址字典的方案。每个存储的对象占用O(1)空间;操作SEARCH、INSERT和DELETE的时间为O(1);对数据结构初始化的时间为O(1)。A:增加两个动态数组,S和S',类似于栈,初始化时都为空,当某个关键字变转载 2012-05-01 15:28:47 · 932 阅读 · 0 评论 -
算法导论10.1-6习题解答(用两个栈实现一个队列)
题目:说明如何用两个栈来实现一个队列,并分析有关队列操作的运行时间。解法:1.有两个栈s1和s2,先往s1内插入a,b,c,这做的都是enqueue操作。2.现在要做dequeue操作,即要得到a,这时可以将s1中的元素全部弹出并存入s2中,这时s2中元素的顺序(从底部到顶部)为c,b,a,这时做s2.pop()操作即可得到a。3.如果继续做enqueue操作,比如插入d,转载 2012-04-30 00:56:21 · 1072 阅读 · 0 评论 -
算法导论10.1-7习题解答(用两个队列实现一个栈)
题目:说明如何用两个队列来实现一个栈,并分析有关栈操作的运行时间。解法:1.有两个队列q1和q2,先往q1内插入a,b,c,这做的都是栈的push操作。2.现在要做pop操作,即要得到c,这时可以将q1中的a,b两个元素全部dequeue并存入q2中,这时q2中元素为a,b,对q1再做一次dequeue操作即可得到c。3.如果继续做push操作,比如插入d,f,则把d,f插转载 2012-04-30 00:59:10 · 1201 阅读 · 0 评论 -
算法导论-4-6 VLSI芯片测试
问题:Diogenes 教授有n个被认为是完全相同的VLSI芯片,原则上它们是可以互相测试的.教授的测试装置一次可测试二片,当该装置中放有两片芯片时,每一片就对另一片作 测试并报告其好坏.一个好的芯片总能够正确的报告另一片的好坏,但一个坏的芯片的结果就是不可靠的.这样,每次的测试的四种可能结果如下: a)证明若少于 n/2 的芯片是坏的,在这种成对测试方式下,使用任何策略都不能确转载 2012-04-16 22:59:08 · 962 阅读 · 0 评论 -
算法导论8-3思考题-排序长度不同的数据项
a)给定一个整数数组,其中不同的整数中包含的数字的个数可能不同,但该数组中,所有整数中总的数字数为n。如何在O(n)的时间内对该数组排序b)给定一个字符串数组,其中不同的串包含的字符数可能不同,但所有串中的总的字符个数为n。如何在O(n)的时间内对该数组排序。(注意是字符串排序,例如a这两个题目都是考对counting sort和radix sort的活学活用。a. The转载 2012-04-25 22:23:36 · 1008 阅读 · 0 评论 -
算法导论8-5思考题-平均排序-average sorting
Suppose that, instead of sorting an array, we just require that the elements increase on average. More precisely, we call an n-element array A k-sortedif, for all i = 1, 2, . . ., n - k, the followi转载 2012-04-25 22:53:48 · 2081 阅读 · 0 评论 -
串的模式匹配算法---RK
这一节介绍一下由Rabin和Karp提出的RK算法。1,RK算法的基本思想 HASH! 如果两个字符串hash后的值不相同,则它们肯定不相同;如果它们hash后的值相同,它们不一定相同。 RK算法的基本思想就是:将模式串P的hash值跟主串S中的每一个长度为|P|的子串的hash值比较。如果不同,则它们肯定不相等;如果相同,则再诸位比较之。转载 2012-08-17 17:40:06 · 880 阅读 · 0 评论