2 asdf adfsd 123abc abc123abc
3 6
#include <stdio.h>
#include <string>
#define N 1001
int lcs[N][N];
int max(int a, int b){
return a > b ? a : b;
}
int main()
{
int n, i, j;
char x[N], y[N];
scanf("%d", &n);
while(n --){
scanf(" %s %s", x, y);
int lenx = strlen(x);
int leny = strlen(y);
for(i = 0; i <= lenx; i ++)
lcs[i][0] = 0;
for(i = 1; i <= leny; i ++)
lcs[0][i] = 0;
for(i = 1; i <= lenx; i ++){
for(j = 1;j <= leny; j ++){
lcs[i][j] = (x[i - 1] == y[j - 1]) ? (lcs[i - 1][j - 1] + 1) : max(lcs[i - 1][j], lcs[i][j - 1]);
}
}
/*for(i = 0; i <= lenx; i ++){
for(j = 0; j <= leny; j ++){
printf("%d ", lcs[i][j]);
}
printf("\n");
}*/
printf ("%d\n", lcs[lenx][leny]);
}
return 0;
}
#include <stdio.h>
#include <string.h>
#define N 1001
char x[N], y[N];
int max(int a, int b){
return a > b ? a : b;
}
int f(int lenx, int leny)
{
if(lenx == 0 || leny == 0)
return 0;
if(x[lenx - 1] == y [leny - 1])
return 1 + f(lenx - 1, leny - 1);
else
return max(f(lenx - 1, leny), f(lenx, leny - 1));
}
int main()
{
int n, lenx, leny, ans;
scanf("%d", &n);
while(n --){
scanf(" %s %s", x, y);
lenx = strlen(x);
leny = strlen(y);
ans = f(lenx, leny);
printf("%d\n", ans);
}
return 0;
}原文:http://blog.csdn.net/tbl_123/article/details/19202147