LintCode : 最长公共子序列

来源:互联网 发布:watershed算法 编辑:程序博客网 时间:2024/06/02 21:33

LintCode : 最长公共子序列

给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。


动态规划。大神July讲的很详细,请大家移步这里。

class Solution {public:    /**     * @param A, B: Two strings.     * @return: The length of longest common subsequence of A and B.     */    int longestCommonSubsequence(string A, string B) {        // write your code here        int m = A.size();        int n = B.size();        vector<vector<int> > dp(m+1, vector<int>(n+1));        for(int i=0; i<=m; i++){            for(int j=0; j<=n; j++){                if(i==0 || j==0){                    dp[i][j] = 0;                }                else{                    if (A[i-1] == B[j-1]){                        dp[i][j] =  dp[i-1][j-1] + 1;                    }                    else{                        dp[i][j] = max(max(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1]);                    }                }            }        }        return dp[m][n];    }};

string A = “bedaacbade”;
string B = “dccaeedbeb”;

dp数组如下:

这里写图片描述

0 0
原创粉丝点击