码迷,mamicode.com
首页 > 其他好文 > 详细

最长公共子序列lcs

时间:2016-12-11 12:58:15      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:span   ring   子序列   using   pre   name   pac   space   div   

#include<iostream>
#include<cstring>
using namespace std;
string z,s1,s2;
int dp[1010][1010],l1,l2;
int main()
{
    cin>>s1>>s2;
    l1=s1.length(),l2=s2.length();
    for(int i=1;i<=l1;i++)
        for(int j=1;j<=l2;j++)
            if(s1[i-1]==s2[j-1])dp[i][j]=dp[i-1][j-1]+1;
            else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
    int i=l1,j=l2;
    while(i&&j)
    {
        if(s1[i-1]==s2[j-1])
        {
            z=s1[--i]+z;
            j--;
        }
        else
            if(dp[i-1][j]>dp[i][j-1])i--;
            else j--;
    }
    cout<<z;
}

 

最长公共子序列lcs

标签:span   ring   子序列   using   pre   name   pac   space   div   

原文地址:http://www.cnblogs.com/thmyl/p/6159270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!