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