edit_distance(a, b, i, j - 1) + 1,
edit_distance(a, b, i - 1, j - 1) + 1)...;
}
}
edit_distance(stra, strb, strlen(stra), strlen(strb));
但是有个严重的问题,就是代码的性能很低下,时间复杂度是指数增长的
上面的代码中...,很多相同的子问题其实是经过了多次求解,解决这类问题的办法是用动态规划思想优化时间复杂度
像以上解决思路,是从后往前算的,比如我想知道 edit_distance(a, b, i, j) 我可能需要知道...][j] 就等于 d[i-1][j-1] 等于 0,然后计算 i = 1, j = 2 直到算出 i = 3, j = 3, 原问题的编辑距离就等于 d[3][3] ,最终矩阵如下:
现在的时间复杂度已到了可接受范围...[i - 1][j - 1] + cost
matrix[i][j] = Math.min(matrix[i - 1][j] + 1, matrix[i][j - 1]