摘要:
一、原理: KMP算法是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。朴素算法(即暴力循环)的效率太差,因为它没有好好利用比较时产生的信息,而KMP算法则运用了这一点,所以可以达到 阅读全文
摘要:
一、Ackerman函数: ackerman函数的定义如下: 二、Ackerman函数的递归实现: 利用递归来实现ackerman函数是比较简单的: 三、利用栈来实现Ackerman函数: 我们可以使用栈来模拟递归函数的过程,下列代码中,使用栈st来保存每个递归函数的参数m,tmp用来保存每个递归函 阅读全文
摘要:
一、原理: 如下图:对于一个序列:16, 7, 13, 10, ..., 14,我们先把16, 7归并且排序成新序列(7, 16),把13, 10归并且排序成(10, 13), ..., 接着重复把(7, 16), (10, 13)归并且排序为(7, 10, 13, 16), 把(9, 15), ( 阅读全文
摘要:
一、原理: 对于序列[0, ..., n-1],首先找出A中最小的元素并将其与A[0]交换。接着找出A中第二小的元素,即A[1, .., n-1]中的最小元素与A[1]交换,对A中的前n-1的元素按该方式继续... 二、代码: 三、分析: 因为每一次都需要对子序列进行遍历,所以其最好和最坏的情况的时 阅读全文
摘要:
一、原理: 插入排序是在一个序列A[0, ..., n-1]中,将从第i位(i >= 2)开始,将第i位插入到前面已排好顺序的序列A[0,... ,i-1]中,最终得到一个有序序列。 二、代码: 三、分析 (1)最好的情况是O(n),即序列已经顺序排好的情况; (2)最坏的情况是O(n^2),即序列 阅读全文
摘要:
写个单向链表模板练练手: 阅读全文
摘要:
这学期公选课选的是MATLAB,所以准备把这学期所学习的整理到博客上,作为记录,哇咔咔~ 一、三维函数图: 三维函数的绘制一般使用plot3()函数,其三个基本参数是三个参数函数,第四个参数可以改变函数的颜色,或者虚实线,如plot3(x, y, z, 'r:'),其绘制的函数图像则为红色虚线的,上 阅读全文
摘要:
C++中的STL(Standard Template Library)用起来挺方便的,这里我们来做一下总结。 一、set set是STL中一种标准关联容器 (vector,list,string,deque都是序列容器,而set,multiset,map,multimap是标准关联容器),它底层使用 阅读全文
摘要:
程序在运行的时候可能产生各种可预料到的异常,例如磁盘不足,内存不足,或是数学运算溢出,数组越界之类的。为了解决这些问题,C++提供了异常处理机制,它一般是由try语句和catch语句构成。 一、try和catch语句 示例代码如下: 首先我们定义了一个函数用于相除,假如被除数等于零就抛出异常。此时可 阅读全文
摘要:
题目大意: 在一个平面上,给定N根线段,若某条线段与另一条线段相交,则将它们归于同个集合,给定k,问第k条线段所在的集合中线段的数量。 题目分析: 问题主要考察计算几何和并查集。 首先我们要判断两条线段是否能相交:线段P1P2与线段Q1Q2相交时,向量P1P2是夹在向量P1Q1和向量P1Q2中间,并 阅读全文