动态规划解题步骤

动态规划解题步骤?

  • 判断原问题是否可递归求解
  • 分析递归过程中是否存在重复子问题
  • 采用备忘录法记录重复子问题的解(剪枝)
  • 改用自底向上的递推(动态规划)

我们以编辑距离为例来分析上面的步骤:

给你两个单词 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.替换一个字符

递归加备忘录:递归加备忘录
动态规划:
在这里插入图片描述

原创文章 13 获赞 18 访问量 338

猜你喜欢

转载自blog.csdn.net/qq_31916715/article/details/105351924