fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 1001
  5.  
  6. int max(int a, int b) {
  7. return (a > b) ? a : b;
  8. }
  9.  
  10. int main() {
  11. char X[MAX] = "", Y[MAX] = "";
  12.  
  13. scanf("%s", X);
  14. scanf("%s", Y);
  15.  
  16. int m = strlen(X);
  17. int n = strlen(Y);
  18.  
  19. int prev[MAX] = {0}, curr[MAX] = {0};
  20.  
  21. for (int i = 1; i <= m; i++) {
  22. for (int j = 1; j <= n; j++) {
  23. if (X[i-1] == Y[j-1])
  24. curr[j] = prev[j-1] + 1;
  25. else
  26. curr[j] = max(prev[j], curr[j-1]);
  27. }
  28.  
  29. for (int j = 0; j <= n; j++)
  30. prev[j] = curr[j];
  31. }
  32.  
  33. printf("%d\n", prev[n]);
  34. return 0;
  35. }
Success #stdin #stdout 0.01s 5328KB
stdin
AGGTAB
GXTXAYB
stdout
4