字符串匹配2-D格子

时间:2014-06-28 17:22:02

标签: algorithm dynamic-programming

我正在尝试查看一个m字符数组并给出一个长度为n + m - 1的输入字符串,我需要检查匹配的最大字符数,因为我们只能去在任何步骤(单调格子路径)向下或向右。

在我看来,这是一个动态编程问题,我会看看当前的最佳解决方案,看看是否向下或向右匹配并使其更好并将其与之前计算的值进行比较(这是我正在努力的地方)。任何见解都会很棒!

1 个答案:

答案 0 :(得分:1)

使用 n x m 的辅助数组,在每个单元格中存储最大“匹配”,您就能够达到这一点。因此,要计算位置(i,j)的值,请使用m = MAX([i,j-1]; [i-1,j]),因为这些是您可能来的两个方向。最后,根据输入矩阵中的(i,j)单元是否与之匹配,编写(m + 1) m i + j -1 输入字符串的字符。

您可以从左到右,从上到下填充辅助矩阵。总体结果当然是在单元格(n,m)中。为了能够重建导致此最大值的路径,您还必须在每个单元格上存储从中获得最大 m (顶部或左侧)的单元格。