最大公共子序列

题目描述

对于两个字符串,请设计一个高效算法,求他们的最长公共子序列的长度,这里的最长公共子序列定义为有两个序列U1,U2,U3...Un和V1,V2,V3...Vn,其中Ui&ltUi+1,Vi&ltVi+1。且A[Ui] == B[Vi]。

给定两个字符串AB,同时给定两个串的长度nm,请返回最长公共子序列的长度。保证两串长度均小于等于300。

测试样例:"1A2C3D4B56",10,"B1D23CA45B6A",12       返回:6
我的代码:
    int findLCS(string A, int n, string B, int m) {
        // write code here
        int dp[310][310] = {0};
        for(int i = 1; i <= n; i++)
        {
           for(int j = 1; j <= m; j++)
           {
               if(A[i-1] == B[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[n][m];
    }

猜你喜欢

转载自www.cnblogs.com/Lune-Qiu/p/9029747.html
今日推荐