动态规划问题
文章平均质量分 82
动态规划问题
码了三年又三年
这个作者很懒,什么都没留下…
展开
-
LCSS—最长回文子序列
关于”回文串“的问题,是面试中常见的,本文提升难度,讲一讲”最长回文子序列“问题,题目很好理解:输入一个字符串 s,请找出 s 中的最长回文子序列长度。比如输入 s="aecda",算法返回3,因为最长回文子序列是 "aca",长度是3。。一定要记住这个定义才能理解算法。为什么这个问题要这样定义二维的 dp 数组呢?,这样定义容易归纳,容易发现状态转移关系。原创 2024-09-13 21:47:44 · 457 阅读 · 0 评论 -
ED—编辑距离
给你两个单词 和 , 请返回将 转换成 所使用的最少操作数 。你可以对一个单词进行如下三种操作: 编辑距离问题就是给定两个字符串 s1 和 s2,只能用三种操作把 s1 变成 s2,求最少的操作数。需要明确的是,不管是把 s1 变成 s2 还是反过来,结果都是一样的,所以下面就以 s1 变成 s2 举例。 解决两个字符串的动态规划问题,一般都是用两个指针 i, j 分别指向两个字符串的最后,然后一步步往前走,缩小问题的规模。 设两个字符串分别为 "rad"原创 2024-09-13 14:59:21 · 526 阅读 · 0 评论 -
LCS—最长公共子序列
专门让索引为0的行和列表示空串,dp[0][..],dp[..][0]都应该初始化为0,这就是 base case。比如按照刚才dp数组的定义,dp[0][3]=0 的含义是:对于空字符串 "" 和 "bab",其LCS的长度为0。因为一个字符串是空串,它们的最长公共子序列的长度显然应该是0。原创 2024-09-12 18:01:49 · 413 阅读 · 0 评论