
算法导论
文章平均质量分 66
曲小鑫
我的学习笔记
展开
-
动态规划的简要总结和四个经典问题的c++实现
本文给出了动态规划的简要定义、适用场景、算法实现。并给出了四种经典动态规划:钢条切割求最大收益问题、矩阵链相乘求最小乘法次数问题、最长公共子序列问题、求最小的搜索代价的最优二叉搜索树的c++代码实现。定义性质 适用条件算法实现过程首先观察问题是否满足最优子结构性质写出递归等式递归的定义子问题的最优解求解子问题的最优解构造最优解四个经典问题的cpp实现1 钢条切割2 矩阵链相乘3原创 2015-06-22 10:28:45 · 7323 阅读 · 1 评论 -
leetcode | Maximum Subarray 最大连续子序列的和
Maximum Subarray: https://leetcode.com/problems/maximum-subarray/ Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [原创 2015-06-23 11:27:52 · 3031 阅读 · 0 评论 -
背包问题:动态规划和贪心算法
以下关于动态规划的文字描述来源1. 动态规划 作者:Hawstein 出处:http://hawstein.com/posts/dp-knapsack.html一切都要从一则故事说起。话说有一哥们去森林里玩发现了一堆宝石,他数了数,一共有n个。 但他身上能装宝石的就只有一个背包,背包的容量为C。这哥们把n个宝石排成一排并编上号: 0,1,2,…,n-1。第i个宝石对应的体积和价值分别为V原创 2015-06-26 21:01:21 · 5072 阅读 · 0 评论 -
生成所有的出栈序列 (回溯法)
给定一个入栈序列,找出所有可能的出栈序列。如入栈序列为 [1, 2, 3] 则可能的出栈序列为 : [ 3 2 1 ] [ 2 3 1 ] [ 2 1 3 ] [ 1 3 2 ] [ 1 2 3 ]采用回溯法和递归统计所有可能的出栈序列。当所有的入栈序列已经全部入栈后,则只能出栈当栈为空时,只能进栈当仍有入栈元素且栈不为空时,可以入栈,也可以出栈入栈 -> 递归处理下一个入栈元原创 2015-08-09 20:45:00 · 5845 阅读 · 4 评论 -
字符串匹配:KMP
参考:从头到尾彻底理解KMP 在字符串 str 中 匹配模式串 pattern 1. 计算模式串的 next 数组; 2. 在字符串中匹配模式串;当一个字符匹配时,str[i++], pattern[k++] 继续匹配下一个字符;当当前字符不匹配时,根据 next 数组移动模式字符串,k = next[k] next 数组:描述模式串中最长相同的前缀和后缀的长度。#include <iostr原创 2015-08-17 16:45:09 · 885 阅读 · 0 评论