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