algorithm - 子串部分数量受限的最长公共子序列
问题描述
最近我正在学习动态编程(DP),这个视频展示了建立 DP 表以获得最长的公共子序列(lcs)。
如果有另一个参数 m 限制子字符串部分的数量,这个表会是什么?例如,假设我们有 a="xxyzxyz" 和 b="xyz",并且我们只允许将子字符串分成 2 个部分,所以 m=2。结果生成子字符串可以放在字符串中的最大组合数。
在这种情况下,我们有以下内容,
[x]xyx[yz]
x[x]yx[yz]
xxy[x][yz]
x[xy]x[z]
注意 [] 里面的字母被认为是 1 部分,所以我们有 2 个 [] 符合 m=2。所以在这种情况下,结果是 4。
我想知道如何建立我的 DP 表。能不能用一张 3-D 代替传统的 ab 2-D DP 表?我的猜测是 DP 方程是 lcs(a, b, m) ?
谢谢!
解决方案
推荐阅读
- c - 如何在 C 中处理从 Tcl_EvalFile() 返回的 TCL_ERROR?
- python - 如何让 Python 上下文管理器包装一段代码并将其作为批处理执行?
- go - 自引用结构,预加载父母的记录在父母和孩子之间切换
- mysql - 在 knex.js 迁移中删除外键不起作用
- python - 我的神经网络中需要另一层吗?
- reactjs - 为什么我的反应路由器链接在抽屉中工作而不是标题
- c# - 如何将数据从 TXT 文件导入 Access 数据库
- rust - 是否可以以普通绑定的方式定义(递归)函数?
- python - 嗨,我开始学习如何编码。我正在尝试使用 for 循环和嵌套 for 循环在 python 中制作一个 ascii 艺术沙漏
- bash - 是否可以使用 find 命令与其他用户一起运行 bash 脚本?