#include "bits/stdc++.h" using namespace std; char a[5000],b[5000]; int num[5000][5000]; int main() { cin >> a >> b; int lena = strlen(a); int lenb = strlen(b); memset(num,0, sizeof(num)); for(int i=1;i <= lena;i++){ for(int j=1;j <= lenb;j++){ if(a[i-1] == b[j-1]) num[i][j] = num[i-1][j-1]+1; else if(num[i][j-1] > num[i-1][j]) num[i][j] = num[i][j-1]; else num[i][j] = num[i-1][j]; } } cout << num[lena][lenb]; }
第一次没有完全理解到底为什么这样做,很无奈,看了许多博文也还是不懂,勉强靠记忆,自己重写了一遍