编辑距离【动态规划】

原题:http://www.51nod.com/Challenge/Problem.html#!#problemId=1183

思路:https://www.dreamxu.com/books/dsa/dp/edit-distance.html

AC代码:

import sys


def dp(d, a, b, i, j):
    if d[i][j] >= 0:
        return d[i][j]
    if a[i - 1] == b[j - 1]:
        d[i][j] = dp(d, a, b, i - 1, j - 1)
    else:
        d[i][j] = min(dp(d, a, b, i - 1, j), dp(d, a, b, i, j - 1), dp(d, a, b, i - 1, j - 1)) + 1
    return d[i][j]


if __name__ == '__main__':
    sys.setrecursionlimit(10000)
    a = input()
    b = input()
    d = [[-1 for i in range(len(b) + 1)] for j in range(len(a) + 1)]
    for i in range(len(b) + 1):
        d[0][i] = i
    for i in range(len(a) + 1):
        d[i][0] = i
    print(dp(d, a, b, len(a), len(b)))

猜你喜欢

转载自www.cnblogs.com/HanLixiang/p/10603963.html