动态规划_最长回文子序列

Sub d53_动态规划_最长回文子序列()
    text1 = "cbbd"
    res = longestPalindromeSubseq(text1)
    Debug.Print (res)
End Sub

Private Function longestPalindromeSubseq(s)
    leng = Len(s)
    ReDim dp(leng, leng)
    For i = leng To 0 Step -1
        dp(i, i) = 1
        For j = i + 1 To leng
            If Mid(s, i + 1, 1) = Mid(s, j + 1, 1) Then
                dp(i, j) = dp(i + 1, j - 1) + 2
            Else
                dp(i, j) = Application.Max(dp(i + 1, j), Application.Max(dp(i, j), dp(i, j - 1)))
            End If
        Next
    Next
    longestPalindromeSubseq = dp(0, leng)
End Function

 

posted @ 2022-12-08 10:28  依云科技  阅读(18)  评论(0)    收藏  举报