LCS

来源:互联网 发布:centos 自动获取ip 编辑:程序博客网 时间:2024/06/04 01:29

问题描述:

有字符串 S1, S2,求两者最长公共子序列数;

思路:

其实就是 edit distance,只不过没了替换操作;

代码:

#include <iostream>#include <cstdio>#include <cstring>#include <string>using namespace std;string s1, s2;void lcs(){    int len1 = s1.length();    int len2 = s2.length();    int arr[len1+1][len2+1];    memset(arr, 0, sizeof arr);    for(int i = 1; i <= len1; i++)        for(int j = 1; j <= len2; j++)    {        if(s1[i-1] == s2[j-1]) arr[i][j] = arr[i-1][j-1]+1;        else arr[i][j] = max(arr[i-1][j], arr[i][j-1]);    }    cout << arr[len1][len2];}int main(){    cin >> s1 >> s2;    lcs();}
0 0
原创粉丝点击