Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 二维格上的字符串匹配_Algorithm_Dynamic Programming - Fatal编程技术网

Algorithm 二维格上的字符串匹配

Algorithm 二维格上的字符串匹配,algorithm,dynamic-programming,Algorithm,Dynamic Programming,我试图查看一个n×m的字符数组,给定一个长度为n+m-1的输入字符串,我需要检查匹配的最大字符数,因为我们只能在任何一步(单调晶格路径)向下或向右移动 在我看来,这似乎是一个动态规划问题,我查看当前的最佳解决方案,看看向下或向右是否匹配,使其更好,并将其与以前计算的值进行比较(这是我正在努力的地方)。任何洞察都会很棒 使用n x m的辅助数组,在每个单元格上存储到该点的最大“匹配”。因此,要计算位置(i,j)的值,可以使用m=MAX([i,j-1];[i-1,j]),因为这是两个可能的方向。最后

我试图查看一个n×m的字符数组,给定一个长度为n+m-1的输入字符串,我需要检查匹配的最大字符数,因为我们只能在任何一步(单调晶格路径)向下或向右移动


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

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


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

嘿,我刚刚以此为基础实现了它,非常感谢!对于某些实现来说,索引有点奇怪,但这总是需要一些调试。