Advertisement
Guest User

1373

a guest
Jul 16th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.09 KB | None | 0 0
  1. import java.io.IOException;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5.  
  6.     public static void main(String[] args) throws IOException {
  7.  
  8.         Scanner input = new Scanner(System.in);
  9.         int k;
  10.         while (true) {
  11.             k = input.nextInt();
  12.             input.nextLine();
  13.             if (k == 0) break;
  14.             String palavra1 = input.nextLine();
  15.             String palavra2 = input.nextLine();
  16.             System.out.println(dnaSequence(palavra1, palavra2, k));
  17.         }
  18.  
  19.     }
  20.    
  21.     public static int dnaSequence(String palavra1, String palavra2, int k) {
  22.         int len1 = palavra1.length();
  23.         int len2 = palavra2.length();
  24.         int[][] matriz = new int[len1+1][len2+1];
  25.         for (int i = 1; i <= len1; i++) {
  26.             for (int j = 1; j <= len2; j++) {
  27.                 matriz[i][j] = Math.max(matriz[i-1][j], matriz[i][j-1]);
  28.                 int n = 0;
  29.                 while (i - 1 - n >= 0 && j - 1 - n >= 0 && palavra1.charAt(i - 1 - n) == palavra2.charAt(j - 1 - n)) {
  30.                     n++;
  31.                 }
  32.                 if (n >= k) {
  33.                     for (int l = k; l <= n; l++) {
  34.                         matriz[i][j] = Math.max(matriz[i][j], matriz[i-l][j-l] + l);
  35.                     }
  36.                 }
  37.             }
  38.         }
  39.         return matriz[len1][len2];
  40.     }
  41.  
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement