最长公共子序列

原创 2018年04月16日 11:18:11

最长公共子序列

解题思路

此题是经典的动态规划题,直接给出状态转移方程
if( a(m) == b(n) )
dp[m][n] = dp[m-1][n-1] + 1
else
dp[m][n] = max(dp[m-1][n], dp[m][n-1])

代码

#include<iostream>
#include <vector>

using namespace std;

class Solution {
public:
    /**
     * @param A: A string
     * @param B: A string
     * @return: The length of longest common subsequence of A and B
     */
    int longestCommonSubsequence(string &A, string &B) {
        // write your code here
        int len1 = A.length();
        int len2 = B.length();
        vector<vector<int> > dp(len2+1, vector<int>(len1+1, 0));
        for(int i=1;i<len2+1;i++)
        {
            for(int j=1;j<len1+1;j++)
            {

                if(A[j] == B[i])
                {
                    dp[i][j] = dp[i-1][j-1] + 1;
                }
                else
                {
                    dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
                }
                cout<<i<<" "<<j<<endl;
            }
        }
        return dp[len2][len1];
    }
};

int main()
{
    string s1 = "12342343535";
    string s2 = "23123425";
    Solution solution;
    cout<<solution.longestCommonSubsequence(s1, s2)<<endl;
}

时间序列(R语言处理金融序列)

使用R语言处理金融时间序列。 课程为零基础入门课程,旨在通过该课程能够了解基本的时间序列。
  • 2017年06月27日 20:13

javascript写算法(一) 动态规划:最长公共子序列

csdn是疯了吗,是baidu算出来的广告嵌在了iframe里,fixed to viewport,之前一直用的c++写算法,在std的基础上javascript的“人造性”更强,比如数组和字符串都有...
  • github_36487770
  • github_36487770
  • 2017-03-26 22:35:48
  • 999

javascript版本的最长公共子序列

初学js,拿个lcs问题练练手: /** * Created by fhqplzj on 2017/7/15. */ function lcs(s1, s2) { var m = s1....
  • ASD991936157
  • ASD991936157
  • 2017-07-15 11:16:29
  • 258

动态规划之最长公共子序列LCS

有两个数组a[ ],b[ ],若他们去掉某些元素之后,剩下的元素集合S全等,则S称为a[ ]和b[ ]的公共子序列,可能有多个集合S1,S2,...SN,称其中元素个数最长的集合为a[ ]和b[ ]的...
  • Zheng_Ze_qi
  • Zheng_Ze_qi
  • 2018-04-08 02:06:12
  • 34

js算法:动态规划-最大公共子串与最大子段和

最大公共子串代码:         问题定义:比如输入两个字符串BDCABA和ABCBDAB的最长公共字符串有BD和AB,它们的长度都是2        动态规划思路:假设两个字符...
  • jrn1012
  • jrn1012
  • 2015-08-28 14:18:10
  • 2372

JS版获取最长公共子串的方法

该方法主要用于查找最长公共子串,特别是用于关键词查找和标红: //最长公共子串 window.LCS = function (str_1, str_2){ if (str_1 == "" ||...
  • zhanqixuan22
  • zhanqixuan22
  • 2015-11-26 15:24:29
  • 1482

NYOJ-36-最长公共子序列

时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 咱们就不拐弯抹角了,如题,需要你做的就是写一个...
  • jsmok_xingkong
  • jsmok_xingkong
  • 2017-04-14 10:09:36
  • 64

最长公共子序列实现

一个给定序列的子序列是在该序列中删去若干元素后得到的序列。给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。最长公共子序列就是求给定两个序列的一个最长公共子...
  • adcxf
  • adcxf
  • 2008-08-08 10:21:00
  • 1219

最长公共子序列

#include #include #include using namespace std; using namespace boost::timer; void lcs_length(ch...
  • shakingWaves
  • shakingWaves
  • 2014-03-09 21:01:56
  • 553

最长公共子序列(易理解)

最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:子串是串的一个连续的部分,子序列则是从不改变序...
  • amazingcode
  • amazingcode
  • 2016-06-16 20:09:01
  • 2250
收藏助手
不良信息举报
您举报文章:最长公共子序列
举报原因:
原因补充:

(最多只允许输入30个字)