fork(4) download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define MAX(a,b) ((a)>(b)?(a):(b))
  4.  
  5. int main(void) {
  6. int k, dp[1005][1005], i, j, xlen, ylen, c;
  7. char x[1005], y[1005];
  8.  
  9. while(1){
  10. scanf("%d", &k);
  11. if(k==0)
  12. break;
  13. scanf("%s%s", x, y);
  14.  
  15. xlen = strlen(x);
  16. ylen = strlen(y);
  17.  
  18. for(i=0; i<=xlen; i++){
  19. for(j=0; j<=ylen; j++){
  20. dp[i][j] = 0;
  21. if(i==0 || j==0)
  22. continue;
  23.  
  24. c = 1;
  25. while(i-c>=0 && j-c>=0 && x[i-c]==y[j-c]){
  26. if(c>=k)
  27. dp[i][j] = MAX(dp[i][j], c+dp[i-c][j-c]);
  28. c++;
  29. }
  30. dp[i][j] = MAX(dp[i][j], dp[i-1][j]);
  31. dp[i][j] = MAX(dp[i][j], dp[i][j-1]);
  32. }
  33. }
  34.  
  35. printf("%d\n", dp[xlen][ylen]);
  36. }
  37.  
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0s 6000KB
stdin
3
lovxxelyxxxxx
xxxxxxxlovely
1
lovxxelyxxxxx
xxxxxxxlovely
3
lovxxxelxyxxxx
xxxlovelyxxxxxxx
4
lovxxxelyxxx
xxxxxxlovely
0
stdout
6
7
10
0