【发布时间】:2021-08-27 05:23:01
【问题描述】:
首先我为我的英语不好而道歉。
最近我遇到了关于两种动态编程的一些令人困惑的事情。
在“最长公共子序列”问题中,如果 char 不相等,则我们取两个子问题之间的最大值。 另一方面“编辑距离”问题,如果字符不相等,那么我们至少需要三个子问题。
我的问题是为什么我们取三个子问题的最小值?
为什么我们不采取最少两个子问题,比如最长公共子序列?
【问题讨论】:
-
动态编程只是构建解决方案的想法,以避免重新计算子问题以提高效率。这通常是通过缓存或创建子问题表。除此之外,这只是编程,您必须考虑细节才能理解它们为何如此——没有一般规则。
标签: c++ algorithm dynamic dynamic-programming