关于最长公共子序列(LCS) 最长公共子序列和最长公共子串是有区别的,之前我一直把它们混淆。 最长公共子串举例:假设S1={A,D,C,B,E,X,Q},S2={H,P,D,C,B,E,M,L} 那么它们的最长公共子串就是{D,C,B,E}…
分类:Programming language
《剑指Offer》题目解析(2)
题目1 滑动窗口的最大值 题目描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}…
算法学习(2):分治法(下)
大整数乘法 1.算法原理 如果我们想要计算两个较大的数字相乘的时候,由于计算机硬件限制可能无法计算,因此我们可以将每个乘数用加法和乘法做分解,当分解到每个因子只是一位数的时候,乘法就很简单了,这也是一种分治法。 (1)分解:首先将2个大整数…
算法学习(2):分治法(上)
二分法 1.算法设计 用一维数组S[]存储该有序序列,设变量low和high表示查找范围的下界和上界,middle表示查找范围的中间位置,x为特定的查找元素。 (1)初始化。令low=0,high=n-1。 (2)middle=(high-…
编程知识点学习(1):字符串知识点
1.若一个字符串长度为n,那么它的子串数目有n(n+1)/2+1个。 2.设S为一个长度为n的字符串,其中的字符各不相同,则S中的互异的非平凡子串(非空且不同于S本身)的个数为(n²/2)+(n/2)-1 3.关于puts和p…
算法学习(1):贪心算法
Dijkstra算法 待后续补充 哈夫曼编码 1.算法介绍 哈夫曼编码采取的贪心策略是每次从树的集合中取出没有双亲且权值最小的两个树为左右子树,构造一棵新树,新树根结点的权值为其左右孩子的结点权值之和,将新树插入到树的集合之中。 求解步骤如…
C++ Primer Plus(第五版)第11章编程题答案
1.修改程序清单11.15,使之将一系列连续的随机漫步者位置写入到文件中。对于每个位置,用步号进行标示。另外,让该程序将初始条件(目标距离和步长)以及结果小结写入到该文件中。 #include <iostream> #inclu…