数据结构/算法
沈万三gz
浮躁一分,到处遍招尤悔因循二字,从来误尽英雄。
展开
-
程序员面试知识点
linux和os:netstat tcpdump ipcs ipcrm (如果这四个命令没听说过或者不能熟练使用,基本上可以回家,通过的概率较小,这四个命令的熟练掌握程度基本上能体现面试者实际开发和调试程序的经验)cpu 内存 硬盘 等等与系统性能调试相关的命令必须熟练掌握,设置修改权限 tcp网络状态查看 各进程状态 抓包相关等相关命令 必须熟练掌握awk sed需掌握共享内存的使用实现转载 2014-07-07 12:47:48 · 1357 阅读 · 0 评论 -
分治法、动态规划、贪心算法
一般实际生活中我们遇到的算法分为四类: 一>判定性问题 二>最优化问题 三>构造性问题 四>计算性问题而今天所要总结的算法就是着重解决 最优化问题 《算法之道》对三种算法进行了归纳总结,如下表所示: 标准分治动态规划贪心算法适用类型通用问题转载 2014-11-28 13:40:36 · 1220 阅读 · 0 评论 -
算法导论--学习笔记017
1.前缀编码可以保证解码唯一0:转向左子结点1:转向右子节点2.平摊分析----不涉及到每一种操作的概率,旨在说明整体操作的平均代价最小,这样有助于优化设计。3.转载 2014-12-02 11:30:28 · 706 阅读 · 0 评论 -
算法导论--学习笔记018
1.波那契堆(Fibonacci Heap) 斐波那契堆是一种松散的二项堆,与二项堆的主要区别在于构成斐波那契堆得树可以不是二项树,并且这些树的根排列是无须的(二项堆的根结点排序是按照结点个数排序的,不是按照根结点的大小)。斐波那契堆得优势在于它对建堆、插入、抽取最小关键字、联合等操作能在O(1)的时间内完成(不涉及删除元素的操作仅需要O(1))。这是对二项堆效率的巨大改善。但由于斐波那契堆得常数转载 2014-12-02 17:30:36 · 968 阅读 · 0 评论 -
【算法学习】双调欧几里得旅行商问题(动态规划)
双调欧几里得旅行商问题是一个经典动态规划问题。《算法导论(第二版)》思考题15-1和北京大学OJ2677都出现了这个题目。旅行商问题描述:平面上n个点,确定一条连接各点的最短闭合旅程。这个解的一般形式为NP的(在多项式时间内可以求出)J.L. Bentley 建议通过只考虑双调旅程(bitonictour)来简化问题,这种旅程即为从最左点开始,严格地从左到右直至最右点,然后严格地从右到左直转载 2014-12-03 17:10:38 · 1608 阅读 · 0 评论 -
最大流最小割定理
最大流-最小割定理:最大流的值为最小割的容量! s-t割定义为对V的一个二划分,其中s和t属于不同的两个集合S和T。割集就是{ (u,v)| u属于S, v属于T }。显然,如果割集中的所有边被移除,那么|f| = 0。 割的容量定义为c(S, T) = sum{ c(u,v), 其中u属于S,v属于T }。给定一个流网络G和一个流,流的残留网G转载 2014-12-03 18:03:46 · 1016 阅读 · 0 评论 -
算法导论--学习笔记019
1.套汇是指利用货币汇兑率的差异将一个单位的某种货币转换为大于一个单位的同种货币的方法。例如,假定1美元可以买0.7英镑,1英镑可以买9.5法郎,1法郎可以买到0.16美元。通过货币兑换,一个商人可以从1美元开始买入,得到0.7*9.5*0.16=1.064美元,从而获得6.4%的利润。假定已知n种货币1c,2c,„,nc和有关兑换率的n*n的表R。其中,R[i,j]是一个单位货币转载 2014-12-03 14:37:58 · 1713 阅读 · 0 评论 -
关于编译性语言、解释性语言和脚本语言的区别
计算机是不能理解高级语言,当然也就不能直接执行高级语言了。计算机只能直接理解机器语言,所以任何语言,都必须将其翻译成机器语言,计算机才能运行高级语言编写的程序。 一、翻译和解释的不同 翻译的方式有两种,一个是编译,一个是解释。 两种方式只是翻译的时间不同。编译型语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重转载 2014-12-05 09:09:22 · 636 阅读 · 0 评论 -
c语言数据类型
在标准头文件发明以前就有了用户自定义类型。u_ 用户自定义, useru -- 无符号 unsigned一般来说,一个C的工程中一定要做一些这方面的工作,因为你会涉及到跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。为了用户的方便,C99标准的C语言硬件为我们定义了这些类型,我们放心使用就可以了。 按照posix标准,一般整形对应的*转载 2015-02-10 16:23:49 · 2857 阅读 · 0 评论 -
语言函数可变长参数
可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的。下面是 printf 函数的声明:int printf ( const char * format, ... );可变参数函数声明方式都是类似的。1.2 如何实现C语言可变参数通过三个宏(va_start、va_end、va_arg)和一个类型(转载 2015-03-26 08:36:16 · 764 阅读 · 0 评论 -
MySQL:索引工作原理
为什么需要索引(Why is it needed)?当数据保存在磁盘类存储介质上时,它是作为数据块存放。这些数据块是被当作一个整体来访问的,这样可以保证操作的原子性。硬盘数据块存储结构类似于链表,都包含数据部分,以及一个指向下一个节点(或数据块)的指针,不需要连续存储。记录集只能在某个关键字段上进行排序,所以如果需要在一个无序字段上进行搜索,就要执行一个线性搜索(Linear Sear转载 2015-07-04 16:36:02 · 560 阅读 · 0 评论 -
ac算法--c++实现
注:由于代码中使用了,对象初始化,所以编译的时候必须使用g++,但是可以修改掉C++内容,编程纯c#include #include #include #include const int MAXQ = 500000+10;const int MAXN = 1000000+10;const int MAXK = 26; //自动机里字符集的大小struct TrieN转载 2015-07-13 11:08:23 · 2238 阅读 · 0 评论 -
算法导论--学习笔记014
1.贪心算法—活动选择问题问题描述:设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si 。如果选择了活动i,则它在半开时间区间[si, fi]内占用资源。若区间[si, fi]与区间[sj, fj]不相交,则称活动i与活动转载 2014-12-02 08:52:01 · 579 阅读 · 0 评论 -
算法导论----学习笔记011
所谓的马尔科夫过程,就是该过程的当前状态仅由前一时刻的状态确定。用概率表达即为:。Viterbi算法的步骤为:初始(t=0),对应各状态产生输出的概率;接下来的各时间步上,是在t时刻到达状态j时产生对应输出序列的概率,也是前面的前向变量;结束:状态序列回溯: 输入: 观察空间 , 状态 ,转载 2014-11-29 14:26:01 · 675 阅读 · 0 评论 -
算法导论--学习笔记010
问题描述:Stewart教授是一家公司总裁的顾问,这家公司计划一个公司聚会。这个公司有一个层次式的结构;也就是说,管理关系形成一棵以总裁为根的树。人事部给每个雇员以喜欢聚会的程度来排名,这是个实数。为了使每个参加者都喜欢这个聚会,总裁不希望一个雇员和他(她)的直接上司同时参加。Stewart教授面对一棵描述公司结构的树,使用了左子女、右兄弟表示法。树中每个结点除了包含指针,还包转载 2014-11-29 13:41:01 · 721 阅读 · 0 评论 -
Berkeley DB
Berkeley DB是一个开源的文件数据库,介于关系数据库与内存数据库之间,使用方式与内存数据库类似,它提供的是一系列直接访问数据库的函数,而不是像关系数据库那样需要网络通讯、SQL解析等步骤。转载 2014-10-10 18:38:14 · 780 阅读 · 0 评论 -
算法导论--学习笔记01
1.p问题,可以在多项式时间内解决的问题,polynomial problem。np 问题,可以在多项式的时间里验证一个解的问题,non-deterministic polynomialnpc问题,如果所有np问题都能在多项式时间内转化为某np问题,则称该np问题为npc问题,np complete转载 2014-11-25 10:50:40 · 619 阅读 · 0 评论 -
字符串匹配算法
字符串匹配:---willamette在匹配串中寻找模式串是否出现,注意和最长公共子序列相区别(LCS: Longest Common Substring)转载 2014-10-20 15:03:38 · 1011 阅读 · 0 评论 -
算法导论---学习笔记07
动态规划求解最长公共子序列(LCS) 首先,子序列和子串是不一样的。子串是连续的,而子序列中的元素组成可以是不连续的,但元素的位置下标一定是递增的。子问题的递归结构计算最优值 Procedure LCS_LENGTH(X,Y); begin m:=length[X]; n:=length[Y];转载 2014-11-28 16:04:02 · 513 阅读 · 0 评论 -
算法导论------学习笔记05
随机化算法(randomized algorithm),是这样一种算法,在算法中使用了随机函数,且随机函数的返回值直接或者间接的影响了算法的执行流程或执行结果。就是将算法的某一步或某几步置于运气的控制之下,即该算法在运行的过程中的某一步或某几步涉及一个随机决策,或者说其中的一个决策依赖于某种随机事件。古代人做决策的时候依靠占卜,这也被认为是随机化算法。举例例一下面,我们转载 2014-11-28 13:38:09 · 490 阅读 · 0 评论 -
算法导论---学习笔记06
矩阵连乘动态规划两个矩阵相乘的计算量程序实现[cpp] view plaincopyprint?//矩阵a和b相乘,p、q分别为a的行和列,q、r分别为b的行和列 void MatrixMultiply(int a[][MAXN], int b[][MAXN], int p, int q, int r) { int sum[MAXN][MA转载 2014-11-28 14:22:58 · 871 阅读 · 0 评论 -
算法导论--学习笔记09
CLRS 15-1 双调欧几里得旅行商问题欧几里得旅行商问题是对平面上给定的n个点确定一条连接各点的最短闭合旅程的问题。如图(a)给出了一个7个点问题的解。这个问题的一般形式是NP完全的,故其解需要多于多项式的时间。J. L. Bentley建议通过只考虑双调旅程来简化问题,这种旅程即为从最左点开始,严格地从左到右直至最右点,然后严格地从右到左直至出发点。下图(b)显示了同样的7个点的最短转载 2014-11-29 11:55:22 · 561 阅读 · 0 评论 -
算法导论--学习笔记013
问题: 假设有一台机器,以及在此机器上处理的n个作业a1,a2,...an的集合。每隔作业aj有一个处理时间tj,效益pj,以及最后期限dj。机器在一个时刻只能处理一个作业,而且作业aj必须在tj连续时间单位内不间断地运行。如果作业aj在最后期限dj之前完成,则获得效益pj,但如果在最后期限之后才完成,则没有效益。请给出一个动态规划算法,来寻找能获得最大量效益的调度,假设所有的处理时间都是1到n之转载 2014-11-29 14:45:29 · 1318 阅读 · 0 评论 -
算法导论----学习笔记08
按照查找的引出的先后顺序介绍:1. 静态查找(树)表以下介绍的是有序表查找,无序表只能顺序查找二分查找作为有序表查找的一种非常普通且实用的方法。大家并不陌生。思想:先确定待查记录所在的范围(区间),然后逐步缩小范围找到或找不到该记录为止。如果mid对应值大于key,high = 密度-1;如果mid对应值小于key,low = mid + 1;否则找到结果。性能分析:对转载 2014-11-29 10:59:13 · 490 阅读 · 0 评论 -
算法导论---学习笔记012
题目:思考:用一个矩阵s来存储N*N的棋盘,用ans来存储中间过程(1)初始化:ans[i][j] = s[i][j] (i = N)(2)递推:ans[i][j] = MAX(s[i+1][j-1], s[i+1][j], s[i+1][j+1]) + s[i][j] (1(3)结果:answer = MAX(s[i][j]) (i = 1)代码:[cpp转载 2014-11-29 14:37:01 · 686 阅读 · 0 评论 -
欧拉定理学习20161004
初等数论四大定理(威尔逊定理,欧拉定理(数论中的欧拉定理),中国剩余定理(又称孙子定理)和费马小定理)费马小定理(Fermat Theory)是数论中的一个重要定理,其内容为: 假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。引转载 2016-10-04 16:37:26 · 1775 阅读 · 0 评论