#include<iostream>
#include<cstring>
#include<stdio.h>
#include<algorithm>
using namespace std;
int dp[1005][1005];
int main(){
int N;
scanf("%d", &N);
while(N--) {
char st1[1005], st2[1005];
scanf("%s", st1);
scanf("%s", st2);
memset(dp, 0, sizeof(dp));
int len1 = strlen(st1), len2 = strlen(st2);
for(int i = 0; i < len1; ++i) {
for(int j = 0; j < len2; ++j) {
if(st1[i] == st2[j]) {
dp[i + 1][j + 1] = dp[i][j] + 1;
}else {
dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1]);
}
}
}
printf("%d\n", dp[len1][len2]);
}
}
NYOJ 36-最长公共子序列
最新推荐文章于 2019-11-13 17:17:51 发布