
DP
binling
这个作者很懒,什么都没留下…
展开
-
LeetCode 32 Longest Valid Parentheses 2种优雅解法
思路一 递归DP定义子问题 : f(i) 为 以s[i] 结尾的子串的原问题,有:如果s[i] == ‘(’:f(i) = 0如果s[i] == ‘)’:如果s[i - 1] == ‘(’:f(i) = f(i - 2) + 2如果s[i - 1] == ‘)’:令 l = f(i -1), 如果s[ i - l - 1] == ‘(’,那么f(i) = f(i - 1) +...原创 2020-03-17 15:28:44 · 174 阅读 · 0 评论 -
Interleaving String
题目:判断一个字符串c是否k原创 2014-08-13 23:12:32 · 455 阅读 · 0 评论 -
Best Time to Buy and Sell Stock III
思路一 正向反向扫描两次的DP关键是两个子问题的定义:1)这个日期为止,交易一次的最大收益2)这个日期开始,交易一次的最大收益问题的解就是遍历一遍,二者和最大值。而两个子问题都是通过基本的dp求解。int maxProfit(vector &prices) { // write your code here if(prices.size()<原创 2014-12-12 19:20:31 · 447 阅读 · 0 评论 -
动归题目分类汇总
九章的分类:1 Matrix DP 代表题目1)Number Triangle: 从三角顶到底边的路径最小和状态定义:f[i][j] 为 从位置(i,j)到底边的路径最小和递推式:f[i][j] = min(f[i + 1][j], f[i + 1][j + 1]) +triangle[i][j]初始化:最后一行和三角形底边一致2) Unique Path :一个矩阵,从原创 2015-01-13 00:33:57 · 797 阅读 · 0 评论 -
递归、加法原理,如何分解问题(独立且完备的划分)
加法原理适用于做一件事有n种独立不相交且完备的方向,每个方向上有ai种方案,则总的方案数就是 a1 + a2 +... + an例题:把n个数分为k个非空子集,有多少种分法?分解问题:第一个集合里放多少个数把原问题的解分成了独立且完备的方向,分别解每个方向上的方案数,然后相加memo = [[-1] * (1000) for i in xrange(1001)]def group(n原创 2015-10-10 23:54:14 · 1495 阅读 · 0 评论 -
背包问题,硬币问题
至少有4种背包问题:1)01背包,原创 2014-10-02 14:36:35 · 1291 阅读 · 0 评论