class="hide-preCode-box">

四、执行结果

在这里插入图片描述

五、拓展

​ 我们在打字时经常会犯换位错误(交换了相邻的字符),例如你想录入“steve"却打成了“setve".在编辑距离的常规定义体系下,换位需要两次替换来修正.

​ 请纳入一种交换操作,使得此类相邻字符间的换位错误只需一次操作即可.

状态方程定义如下:

当 P[i] = T[k]时,有

d p [ i ] [ j ] = d p [ i − 1 ] [ j − 1 ] , i − 1 ≥ 0 , j − 1 ≥ 0 dp[i][j] = dp[i-1][j-1],i-1\geq0,j-1\geq0 dp[i][j]=dp[i1][j1],i10,j10

当P[i] = T[j-1]且P[i-1]=T[j]时

d p [ i ] [ j ] = d p [ i − 2 ] [ j − 2 ] + 1 , i − 2 ≥ 0 , j − 2 ≥ 0 dp[i][j] = dp[i-2][j-2] + 1,i-2\geq0,j-2\geq0 dp[i][j]=dp[i2][j2]+1,i20,j20

否则:

d p [ i ] = m a x { d p [ i − 1 ] [ j − 1 ] + 1 , i − 1 ≥ 0 , j − 1 ≥ 0 d p [ i − 1 ] [ j ] + 1 , i − 1 ≥ 0 d p [ i ] [ j − 1 ] + 1 , j − 1 ≥ 0 dp[i] = max class="MathJax_Display">{dp[i1][j1]+1,i10,j10dp[i1][j]+1,i10dp[i][j1]+1,j10" role="presentation">{dp[i1][j1]+1,i10,j10dp[i1][j]+1,i10dp[i][j1]+1,j10 dp[i]=maxdp[i1][j1]+1,dp[i1][j]+1,dp[i][j1]+1,i10,j10i10j10

代码请读者自己实现。

>>
注:本文转载自blog.csdn.net的仁者乐山智者乐水的文章"https://blog.csdn.net/qq_39559641/article/details/117192831"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!