动态规划解题步骤?
- 判断原问题是否可递归求解
- 分析递归过程中是否存在重复子问题
- 采用备忘录法记录重复子问题的解(剪枝)
- 改用自底向上的递推(动态规划)
我们以编辑距离为例来分析上面的步骤:
给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。
你可以对一个单词进行如下三种操作:
插入一个字符
删除一个字符
替换一个字符
示例 1:
输入:word1 = “horse”, word2 = “ros”
输出:3
解释:
horse -> rorse (将 ‘h’ 替换为 ‘r’)
rorse -> rose (删除 ‘r’)
rose -> ros (删除 ‘e’)
分析:
1、当第一个字符串的第一个字符和第二个字符串的第一个字符相同时,对结果没有增益效果。
2、当第一个字符串的第一个字符和第二字符串的第一个字符不相同时,有三种情况a.插入一个字符
b.删除一个字符
c.替换一个字符
递归加备忘录:
动态规划: