表示很久没有接触算法了,好多东西真心要一点点拾掇起来,为了找份好工作,我也是蛮拼的了。 好吧,下来说说分治算法,因为在leetcode上刚好碰到这么个问题,想到要用分治做,但是一时又不清楚具体步骤。于是抱起《算法导论》啃起来。刚好上面的例子也是这个算法,就研读了一下。 假定,我们要寻找子数组...
分类:
编程语言 时间:
2015-01-22 14:55:04
阅读次数:
164
关于严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(例如算法导论指的实际上是数据结构和算法导论),所以我认为本文题目是合理的。这篇文章讲了什么?我这些年学习数据结构和算法的总结。一些不错的算法书籍和教程。算法的重要性。初学第一次接触...
分类:
编程语言 时间:
2015-01-20 10:14:31
阅读次数:
246
一:HMM解码问题
(1)编程深处无非就是算法和结构,以及各种架构和版本的管理(如Git管理),因此作为程序员算法这一关是绕不过去的;
(2)关于算法,个人比较崇尚的一本书是《算法导论》和ACM实战系类的算法培训;
(3)对于自然语言处理领域或者部分机械学习领域的算法,HMM模型是非常经典的算法之一,非常适合初学者学习和研究;
(4)HMM模型μ=(A,B,π),的状态是不可见...
分类:
其他好文 时间:
2015-01-19 10:53:05
阅读次数:
234
快速傅里叶变换模板题算法理解请看《算法导论》第30章《多项式与快速傅里叶变换》,至于证明插值唯一性什么的看不懂也没关系啦~只要明白这个过程是怎么算的就ok。递归版:(4252ms 23468kb) 1 //UOJ 34 递归版 2 #include 3 #include 4 #include 5 #...
分类:
其他好文 时间:
2015-01-18 19:42:15
阅读次数:
189
动态规划,其实跟分治法有些相似,基本思想都是将复杂的问题分成数个简单的子问题,然后再去解决。它们的区别在于,分治法关注的子问题不相互“重叠”,而动态规划关注的子问题,多是相互“重叠”的。...
分类:
编程语言 时间:
2015-01-18 11:54:04
阅读次数:
528
1. 线段树简介:---------------线段树是建立在线段的基础上,每个结点都代表了一条线段[a,b]。长度为1的线段称为元线段。非元线段都有两个子结点,左结点代表的线段为[a,(a + b) / 2],右结点代表的线段为[((a + b) / 2)+1,b]。若非元线段的编号为 i,那么他...
分类:
编程语言 时间:
2015-01-17 19:21:54
阅读次数:
164
说明:在学习算法导论,需要写一嵌套的小程序,题目是:
Consider a three-parameter recursive function w(a, b, c):
if a
1
if a > 20 or b > 20 or c > 20, then w(a, b, c) returns:
w(20, 20, 20)
if a
w(a, b, c-1) +...
分类:
编程语言 时间:
2015-01-17 18:03:29
阅读次数:
380
红黑树
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述
什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树。。。
当然,这个是我说的。。。
《算法导论》上可不是这么说的:
如果一个二叉查找树满足下面的红黑性质,那么则为一个红黑树。
1)每个节点或是红的,或者是黑的。
2)每个叶子节点...
分类:
其他好文 时间:
2015-01-16 22:30:55
阅读次数:
162
6.4-5 在所有元素都不同的情况下,HEAPSORT的时间复杂度是Ω(nlgn)
证明:要证明这一点其实不难,只需直觉上理解——虽然堆序不“完整”,但也能在一定程度上确定大小关系,比如较小的元素多半高度很低(接近底层)。
首先进行一个粗略的计算(元素都不同):
堆中高度为0(即最底层)的节点数为总数的一半 n/2。那这些元素在整个元素集中大小位置是如何的呢:
先把这 n/2 个节点排好序...
分类:
编程语言 时间:
2015-01-15 16:14:27
阅读次数:
270