打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
最长公共子序列 与 最长公共连续子串

最长公共子序列

//最长公共子序列(个数)#include<iostream>using namespace std;int c[100][100]={0};int len1,len2;int  gcd(string a,string b){    len1=a.length();     len2=b.length();    int tmp=-1;    for(int i=0;i<len1;i  )    {        for(int j=0;j<len2;j  ){            if(a[i]==a[j]) c[i][j]=c[i-1][j-1] 1;            else c[i][j]=max(c[i-1][j],c[i][j-1]);            if(tmp<c[i][j]) tmp=c[i][j];        }    }    return tmp;}int main(){    string a,b;    while(cin>>a>>b){    cout<<gcd(a,b);        }} 
View Code

最长连续公共子序列

#include<iostream>#include<string.h>using namespace std; void print_substring(string str, int end, int length){    int start = end - length   1;    for(int k=start;k<=end;k  )        cout << str[k];    cout << endl;} int main(){    string A,B;    cin >> A >> B;    int x = A.length();    int y = B.length();    A = " "   A;//特殊处理一下,便于编程     B = " "   B;        //回忆一下dp[][]的含义?     int **dp = new int* [x 1];    int i,j;    for(i=0;i<=x;i  )    {        dp[i] = new int[y 1];        for(j=0;j<=y;j  )            dp[i][j] = 0;    }            //下面计算dp[i][j]的值并记录最大值     int max_length = 0;    for(i=1;i<=x;i  )        for(j=1;j<=y;j  )            if(A[i]==B[j])            {                dp[i][j] = dp[i-1][j-1]   1;                if(dp[i][j]>max_length)                    max_length = dp[i][j];            }            else                dp[i][j] = 0;         //LCS的长度已经知道了,下面是根据这个最大长度和dp[][]的值,    //找到对应的 LCS具体子串, 注意:可能有多个     int const arr_length = (x>y?x:y)   1;    int end_A[arr_length];    //记录LCS在字符串A中结束的位置     int num_max_length = 0;    //记录LCS的个数         for(i=1;i<=x;i  )        for(j=1;j<=y;j  )            if(dp[i][j] == max_length)                end_A[num_max_length  ] = i;        cout << "the length of LCS(substring) is : " << max_length  << endl << " nums: " << num_max_length << endl << "they are (it is): " << endl;    for(int k=0;k<num_max_length;k  )    //输出每个具体的子串         print_substring(A, end_A[k], max_length);        return 0;}
View Code

 

来源:http://www.icode9.com/content-4-111251.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
370,最长公共子串和子序列
动态规划常见实例详解
【动态规划】最长公共子序列与最长公共子串
深入解析最长公共子串
六大算法之三:动态规划
「算法总结」13 道题搞定 BAT 面试——字符串
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服