递归 # include <iostream> # include <string> # include <cmath> using namespace std; int max(int a,int b) { if (a > b) return a; else return b; } int LCS(char a[1000],char b[1000],int lena,int lenb,int n) { if (lena == 0 || lenb == 0) return n; else if (a[lena - 1] == b[lenb - 1]) { return LCS(a, b, lena-1, lenb-1, n+1); } else { return max(LCS(a, b, lena, lenb - 1, n), LCS(a, b, lena - 1, lenb, n )); } } int main() { char a[1000], b[1000]; cin >> a; cin >> b; int n = 0, lena = strlen(a), lenb = strlen(b); cout << LCS(a, b, lena, lenb, n); }