数据结构和算法
文章平均质量分 78
pla1988
这个作者很懒,什么都没留下…
展开
-
滚动数组
滚动数组的作用在于优化空间,主要应用在递推或动态规划中(如01背包问题)。因为DP题目是一个自底向上的扩展过程,我们常常需要用到的是连续的解,前面的解往往可以舍去。所以用滚动数组优化是很有效的。利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。 一个简单的例子: 斐波那契数列: 一般代码: #include #include using namespace std;转载 2013-03-25 15:26:45 · 231 阅读 · 0 评论 -
poj2411 解题报告
题目:给你一个h*w的矩形,用一个1*2的小矩形去填充,问有多少种填充方法,不考虑对称性 详细的解题报告参考: http://www.2cto.com/kf/201208/146894.html 下面描述代码实现 #include #include #define swap(x, y) do { \ int t; \ t = x; \ x = y; \ y = t;原创 2013-03-26 21:06:26 · 356 阅读 · 0 评论 -
字符串匹配 KMP 算法
KMP算法中的KMP分别是指三个人名:Knuth、Morris、Pratt,其本质也是前缀匹配算法,对比前缀蛮力匹配算法,区别在于它会动态调整每次模式串的移动距离,而不仅仅是加一,从而加快匹配过程。下图通过一个直观的例子展示前缀蛮力匹配算法和KMP算法的区别,前文提过,这二者唯一的不同在于模式串移动距离。 上图中,前缀蛮力匹配算法发现匹配不上,就向右移动距离1,而KMP算法根转载 2013-09-03 00:44:09 · 226 阅读 · 0 评论