动态规划
chuyangzhanfang
一个与算法相爱相杀的计算机小弱鸡
展开
-
算法导论 动态规划之最长回文子序列
首先需要强调的一点是:子序列不同于子串,子串要求必须连续,而子序列则不需要,与本篇讨论的这个问题比较相似的一个问题就是求一个字符串的最长回文子串,这个问题我们在下一篇会进行讨论。 这里我们说两种解这道题的方法: 方法一: 这个方法是一个比较巧妙的思路, 只要把原字符串逆转后和原字符串比较并且利用求最长公共子序列的方式求出LCS即可得到最长回文子序列。也就是说求出的LCS=最长回文子序列。原创 2016-04-25 23:29:32 · 1456 阅读 · 0 评论 -
HDU 1003 Max Sum
这道题就是一道最大子段和问题,经典dp问题,只不过它不仅要你求出最大子段和,还要求你给出最大段的起始位置与结尾位置。 最大子段和就是基于递推公式 f[j]=max(f[j-1]+a[j],a[j]),至于结尾位置我们只需要在求解f数组的过程中用一个End变量记录一下即可,若此时的f[j]最大,则令End=j,而起始位置则是在得知结尾位置之后,利用结尾位置推出起始位置,至于怎样推,我这里给出两种方法原创 2016-04-22 13:59:46 · 326 阅读 · 0 评论