Algorithm Combat 1: Programación dinámica: Python de subsecuencia común más larga

El siguiente es un código de muestra de un algoritmo de programación dinámica implementado en Python para resolver el problema de la subsecuencia común más larga (Subsecuencia común más larga):

def longestCommonSubsequence(text1, text2):
    m = len(text1)
    n = len(text2)

    # 创建二维数组dp,并初始化为0
    dp = [[0] * (n + 1) for _ in range(m + 1)]

    for i in range(1, m + 1):
        for j in range(1, n + 1):
            if text1[i - 1] == text2[j - 1]:
                # 如果两个字符相等,则最长子序列长度加一
                dp[i][j] = dp[i - 1][j - 1] + 1
            else:
                # 否则取前一个状态的最大值
                dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])

    return dp[m][n]

text1 = "abcde"
text2 = "ace"

result = longestCommonSubsequence(text1, text2)

print("The length of the longest common subsequence is:", result)

El código anterior usa una lista bidimensional dppara registrar la longitud de la subsecuencia común más larga. Al recorrer la cadena text1y text2, en función de si los caracteres actuales son iguales, actualice dpel valor de la matriz. Finalmente regresa dp[m][n]como la longitud de la subsecuencia común más larga.

Tenga en cuenta que el código anterior solo resuelve la longitud del problema de la subsecuencia común más larga. Si necesita obtener la subsecuencia común más larga específica (no solo la longitud), se requieren algunas operaciones adicionales. ¡Espero que este ejemplo te ayude!

Supongo que te gusta

Origin blog.csdn.net/weixin_42499608/article/details/131319681
Recomendado
Clasificación