算法
chchlh
CS学生,爱读书,爱学习,爱互联网。
展开
-
算法复杂度
由于我们是以F(n)最坏情况分析的,所以,我们可以100%保证在输入规模超过临界条件n0时,算法的运行时间一定不会高于渐近上确界,但是并不能100%保证算法运行时间不会低于渐近下确界,而只能100%保证算法的最坏运行时间不会低于渐近下确界。 F(n)不是确定的,他是在一个范围内变动的,那么我们关心哪个F(n)呢?一般我们在分析算法时,使用最坏情况下的F(n)来评价算法效率,原因有如下两点:转载 2013-11-25 21:10:33 · 633 阅读 · 0 评论 -
prime算法
prime算法的基本思想 1.清空生成树,任取一个顶点加入生成树 2.在那些一个端点在生成树里,另一个端点不在生成树里的边中,选取一条权最小的边,将它和另一个端点加进生成树 3.重复步骤2,直到所有的顶点都进入了生成树为止,此时的生成树就是最小生成树 kruskal算法: 构造一个只含n个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树的根节点,则它是一个含有n棵树的森林 。转载 2014-12-06 17:32:04 · 1184 阅读 · 0 评论 -
排序算法
排序算法(规模为n): 冒泡:每一轮相邻元素比较,大的后撤,小的往前,得到最大的在末尾(或者最小的在最前 头),重复n-1轮就OK了。 插入:一个一个来,来一个,排一个。 快排:取一个元素a,然后头指针指向头,尾指针指向尾,从头找到一个比a大的,从尾找到一个 比a小的,交换位置,直到头指针越过了尾指针。这是一轮划分,然后划分的两组继续这 个方法,直到只剩两个。(分治思想) 选择:找到最小/原创 2013-11-25 21:03:47 · 652 阅读 · 0 评论 -
LCS
两个字符串 最长公共字串:相同的连续的序列有多长? 最长公共子序列:相同的当不一定连续的序列有多长? DP解法:都是构造矩阵, 最长公共字串思路:在边界(行==0或者列==0)构造好之后,下一个元素要么是0(两个元素不同),要么是左上对角元素值+1。 以下摘自:http://www.cnblogs.com/ider/p/longest-common-substring-probl原创 2014-03-06 13:24:14 · 695 阅读 · 0 评论 -
static和const区别
const修饰变量,就成了一个常量,常量就是一定不可以改变值的变量。初始化之后,任何赋值都是非法的。 static修饰变量,名为:静态变量,含义是在内存中只有一份保存这个变量的地址,独一无二的。在面向对象中使用,代表为各个子类所共享的一份地址,任何子类都可以修改它,一旦修改,从此修改。它是属于整个基类的,不独属于任何一个子类。 const修饰方法,代表这个方法不可以改变任何的变量。 stat原创 2013-11-26 18:10:57 · 725 阅读 · 0 评论 -
接口与抽象类(二)
abstract class在Java语言中体现了一种继承关系,要想使得 继承关系合理,父类和派生类之间必须存在"is-a"关系,即父类和派生类在概念本质上应该是相同的。对于interface来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的, 仅仅是实现了interface定义的契约而已。(这个总结得比较到位) http://dev.yesky.转载 2013-11-26 16:51:33 · 592 阅读 · 0 评论 -
接口与抽象类的区别 原文地址:http://blog.vsharing.com/jekkon/A1604115.html
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。 1.面向接口编程和面向对象编程是什么关系 首先,面向接口编程和面向对象编程并转载 2013-11-26 16:41:04 · 744 阅读 · 0 评论 -
指针和引用的区别
从概念上讲,指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。 而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量) 以上说得很透彻。 原文地址: http://vincent转载 2013-11-26 15:21:16 · 546 阅读 · 0 评论 -
public,protected, private
公有继承时,基类的公有成员,变为派生类的公有成员,基类的保护成员,变为派生类的保护成员。 保护继承时,基类的公有和保护成员,均变为派生类的保护成员。 私有继承时,基类的公有和保护成员,均变为派生类的私有成员。 当一个类的成员定义为public,就能够在类外访问,包括它的派生类。 当一个成员定义为private,它仅能在类内访问,不能被它的派生类访问。 当一个成员定转载 2013-11-26 18:33:46 · 675 阅读 · 0 评论 -
多态与虚函数
多态的实现是通过虚函数实现的。 定义: 指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作 首先,为什么要用多态,多态是一种“一个接口,多种实现”。使用多态虽然看似无用,但是在大型软件开发的时候,多态就是可以实现可扩展性和代码重用的重要工具。试想,你定义了100个类继承于A类,如果只是使用基类的指针数组的某个元素就可以访问到每一个子类,代码就很优雅,特别是以后如果要添加多20原创 2013-11-26 16:11:51 · 588 阅读 · 0 评论 -
NP问题:
NP问题: P问题属于NP问题。 归约:一次多项式可以归约到二次多项式。如果二次多项式有解法,一次也有解法。 P问题:在多项式时间内验证简单,求解也简单。 NP问题:在多项式时间内验证简单,求解复杂。 NPC问题:所有的NP问题都可以归约到该NP问题。NPC问题的证明:1.NP问题 2.某个NPC问题可以归约到此问题。 NP-Hard问题:所有的NP问题都可以归约到该问题。(不一定原创 2013-11-25 21:04:57 · 992 阅读 · 0 评论 -
利用FFT和逆FFT求多项式乘法 的原理:
利用FFT和逆FFT求多项式乘法 的原理: 假设是N次和M次多项式的乘法, 首先明白为什么要用FFT方法,因为一个字,快。N越大,快得越离谱。 然后是过程,三步走: 1.由系数来求点值(求值) 2.代入点值计算总体Y. 3.由点值计算系数(插值) 其实步骤1的点值可以任意取,只要取够了n+m次,就可以表示了,不过,任意取的代价就是步骤3基本没法求(除非你用什么matlab工具原创 2013-11-25 21:01:21 · 2979 阅读 · 1 评论 -
最短路算法总结
最近做POJ图论关于最短路径方面的题目,感觉需要总结一下: 参考链接:最短路算法 (1)松弛的意思就是用可以替代的更优的路径得到的值去更新原来的值。 比如:AB + BC 牢记并灵活使用这个所谓的三角形不等式,是解题的关键。 (2)最短路径的估计值就是对dist[][](多源最短)和dist[](单源最短)的初始化。 根据题目的不同初始化不同,一般的最短路的初始化(有各种变形的不在原创 2014-12-05 16:36:08 · 1520 阅读 · 0 评论