约束条件下的最长重复子序列

问题描述

我正在自学动态编程,并使用以下方法在 O(n^2) 中实现了字符串的最长重复子序列算法:

for (int r = 1; r <= n; r++)
        for (int c = 1; c <= n; c++)
            if (input.charat(r - 1) == input.charat(c - 1) && r != c)
                memo[r][c] = 1 + memo[r - 1][c - 1];
            else
                memo[r][c] = Math.max(memo[r][c - 1],memo[r - 1][c]);

但是我想知道的是是否可以通过应用 2 个约束来使用 DP 来完成:

  • lrs 的长度应为 N
  • lrs 应包含特定字符。

第二个项目符号示例:

  • 输入字符串可以是 "110110" 并且没有约束 lrs = "111" 但有以下约束:
    • lrs 的长度应该是 3
    • lrs 应该包含 2 个 1 和 1 个 0
    • lrs = "110"

DP 可以实现吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)