rt,我用 dp 求最长公共子序列的长度,结果 WA 了,题解里都不是用 dp 算的,也没有提 dp 为什么错,求解答
#include <iostream>
#include <cstring>
#define N 110
using namespace std;
int T, f[N][N];
string s1, s2;
int main() {
cin >> T;
while (T--) {
memset(f, 0, sizeof(f));
cin >> s1 >> s2;
int len1 = s1.length(), len2 = s2.length();
for (int i = 1; i <= len1; i++)
for (int j = 1; j <= len2; j++) {
if (s1[i - 1] == s2[j - 1])
f[i][j] = f[i - 1][j - 1] + 1;
else
f[i][j] = max(f[i - 1][j], f[i][j - 1]);
}
cout << len1 + len2 - f[len1][len2] << '\n';
}
return 0;
}