#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string a, b;
int LCS(int n, int m){
if (n == -1 || m == -1) return 0;
if (a[n] == b[m])
return LCS(n - 1, m - 1) + 1;
else
return max(LCS(n - 1, m), LCS(n, m - 1));
}
string LCSR(int n, int m){
if (n == -1 || m == -1) return "";
if (a[n] == b[m])
return LCSR(n - 1, m - 1) + a[n];
else
return LCS(n - 1, m) > LCS(n, m - 1) ? LCSR(n - 1, m) : LCSR(n, m - 1);
}
int main(){
cin >> a >> b;
cout << LCS(a.length()-1, b.length()-1) << endl;//数组从0开始
cout << LCSR(a.length(), b.length()) << endl;
return 0;
}
LCS-递归
最新推荐文章于 2021-09-24 21:28:58 发布