上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 34 下一页

2012年6月15日

摘要: $_这个特殊变量是许多Perl函数的默认参数,也是许多Perl控制结构的默认控制变量. $_特殊变量也可当作一个函数调用缺失的参数来使用.foreach 结构的控制变量是可选的,默认为$_的值. Perl把最近发生的系统错误消息保存在特殊变量$!中. #! /usr/local/bin/perl -W#fig05_03.plforeach $name('Amanda','Jeff','Sarah'... 阅读全文
posted @ 2012-06-15 16:39 做个不善的人 阅读(1306) 评论(0) 推荐(0)
 

2012年6月9日

摘要: 插入操作: RB-INSERT(T, z) 1 y ← nil[T] // y 始终指向 x 的父结点。2 x ← root[T] // x 指向当前树的根结点,3 while x ≠ nil[T]4 do y ← x5 if key[z] < key[x] //向左,向右..6 then x ← left[x]7 else x ← right[x] // 为了找到合适的插入点,x 探路跟踪路径,直到x成为NIL 为止。8 p[z] ← y // y置为 插入结点z 的父结点。9 if y = nil[T]10 then root[T] ← z11 else if key[z] < 阅读全文
posted @ 2012-06-09 17:57 做个不善的人 阅读(1862) 评论(0) 推荐(1)
 

2012年6月3日

摘要: 单模式字符串匹配 1. 朴素算法 朴素算法的问题在于不够智能,有些位置明显没有必要进行比较操作,但这个算法无法区分出来,还是继续比较,浪费了资源。 2. KMP算法 在KMP算法中,引入了前缀函数的概念,从而可以更加精确的知道:当不匹配发生时,应该跳过多少个字符。下面介绍前缀函数。 字符串A = "abcde" B = "ab"。 那么就称字符串B为A的前缀,记为B ⊏ A。同理可知 C = "e","de" 等都是 A 的后缀,以为C ⊐ A。 这里模式串 P = “ababaca”,在匹配了 q=5 个字符后失 阅读全文
posted @ 2012-06-03 12:37 做个不善的人 阅读(12721) 评论(0) 推荐(1)
 

2012年5月31日

摘要: NP完全性理论的奠基人—1982年度图灵奖得主斯蒂芬·库克 ---- 加拿大多伦多大学教授斯蒂芬·库克(Stephen Arthur Cook)因其在计算复杂性理论方面的突出贡献,尤其是在奠定NP完全性理论基础上的突出贡献而荣获1982年度的图灵奖。但库克实际上是美国科学家。 ----库克1939年12月14日生于纽约州的布法罗,他的父亲是一名化学家,在著名的联合碳化物公司工作,同时在布法罗大学任... 阅读全文
posted @ 2012-05-31 18:58 做个不善的人 阅读(4509) 评论(0) 推荐(0)
 

2012年5月28日

摘要: 假设要用很多个教室对一组活动进行调度。我们希望使用尽可能少的教室来调度所有的活动。请给出一个有效的贪心算法,来确定哪一个活动应该使用哪一个教室。 (这个问题也被称为区间图着色)问题。我们可以作出一个区间图,其顶点为已知的活动,其边连接着不兼容的活动。为使任两个相邻结点的颜色均不同,所需的最少颜色数对应于找出调度给定的所有活动所需的最少教室数。 最优子结构: 设S为原问题所有活动的集合; 设A为原问... 阅读全文
posted @ 2012-05-28 08:57 做个不善的人 阅读(1797) 评论(0) 推荐(0)
 
摘要: 贪心算法是以动态规划算法为基础的。在每一个贪心算法的下面,总是会有一个更加复杂的动态规划解。如何判断某个问题是否可以使用贪心算法呢?关键点就是验证其具有贪心选择性质:一个全局最优解可以通过局部最优选择来达到。真正要做的就是证明将子问题的最优解与所做的贪心选择合并后,的确可以得到原问题的一个最优解。 都知道动态规划算法是贪心算法的基础。那在想使用贪心算法的时候,是不是可以考虑先构造其动态规划算法,然... 阅读全文
posted @ 2012-05-28 07:58 做个不善的人 阅读(584) 评论(0) 推荐(0)
 

2012年5月25日

摘要: 《算法导论》第15章专门介绍动态规划算法,本文结合装配线调度和矩阵链乘法理解动态规划算法的一些基本问题(15.1 – 15.3)。适合采用动态规划方法的最优化问题包含两个要素:最优子结构和重叠子问题。最优子结构如果问题的一个最优解中包含子问题的最优解,则该问题具有最优子结构。要判断问题是否具有最优子... 阅读全文
posted @ 2012-05-25 22:18 做个不善的人 阅读(872) 评论(0) 推荐(0)
 

2012年5月12日

摘要: C++中, 一个参数的构造函数, 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。例如下面例子中C的构造函数C(int i)就是,既可以用来作为构造器,又可以实现隐式转换C c=2;但是有时这并不是我们想要的,就可以将这个构造函数声明为explicit,以避免将构造函数作为隐式类型转换符来使用。Copy constructor也是同样的,如果Copy constructor被声明为explicit,则这个类对象不能用于传参和函数返回值。但是仍然可以直接调用。//spec1_explicit.cpp//compilewith:/EHsc#include<stdio.h 阅读全文
posted @ 2012-05-12 18:03 做个不善的人 阅读(2092) 评论(0) 推荐(0)
 
摘要: 返回值在编译器中如何实现【实现模型1】cfont的实现采用了双阶段转化。1.首先声明一个额外的参数,类型上类对象的引用,用来存放返回结果。2.对这个参数利用返回值进行拷贝初始化。过程类似于参数传递,也是要定义一个临时对象,用来保存返回值,然后在函数内部调用拷贝构造函数用那个return值进行初始化。Xbar(){Xxx;//processxx...returnxx;}编译器转化后//functiontransformationtoreflect//applicationofcopyconstructor//PseudoC++Codevoidbar(X&__result){Xxx;//c 阅读全文
posted @ 2012-05-12 16:05 做个不善的人 阅读(1548) 评论(1) 推荐(1)
 
摘要: 赋值运算符‘=’的默认行为是数据成员的值的相应赋值,默认行为在类的成员中包含指针时容易出现问题,因为它只是赋值了指针的值,但是指针指向的值并未复制。赋值运算符是可以如同其他运算符一样重载的,重载后的‘=’就可以有定制的行为了。当定义Copy Constructor时一般应该重新定义赋值运算符。Copy Constructor当class object是以“相同class的另一个object“作为初值时,其内部是以所谓的default memberwise initialization手法完成的,也就是把每一个内建的或派生的data member的值,从某个object拷贝一份到另一个objec 阅读全文
posted @ 2012-05-12 14:27 做个不善的人 阅读(2094) 评论(0) 推荐(0)
 
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 34 下一页