基本思想:
还是要注意索引问题;
关键点:
无;
#include<iostream> #include<string> #include<algorithm> #include<vector> using namespace std; vector<vector<int>> dp; int main() { string a, b; while (cin >> a >> b) { int lena = a.size()+1; int lenb = b.size()+1; int len = max(lena, lenb) + 2; dp.resize(len); for (int i = 0; i < len; i++) { dp[i].resize(len); } for (int i = 0; i < len; i++) dp[i][0] = dp[0][i] = 0; for (int i = 1; i < lena; i++) { for (int j = 1; j < lenb; j++) { if (a[i-1] == b[j-1]) { dp[i][j] = dp[i - 1][j - 1] + 1; } else { dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); } } } cout << dp[lena - 1][lenb - 1] << endl; } }