Credo sia corretto, o no?codice:public class LCS { public int[][] M; public String LCS; public static int[][] compileM(String a, String b) { int[][] L = new int[a.length()+1][b.length()+1]; for (int i = 0; i < L.length; i++) { L[i][0] = 0; } for (int j=0; j <L[0].length; j++) { L[0][j] = 0; } for (int i = 0; i < a.length(); i++) { for (int j=0; j < b.length(); j++) { if (a.charAt(i)==b.charAt(j)) { L[i+1][j+1]=L[i][j]+1; } else { L[i+1][j+1] = Math.max(L[i][j+1], L[i+1][j]); } } } return L; } private String reverse(String s) { String temp=""; for (int i=0; i < s.length(); i++) { temp += s.charAt(s.length()-i-1); } return temp; } public LCS(String a, String b) { LCS = ""; M = compileM(a,b); int i = M.length-1; int j = M[0].length-1; while (i > 0 && j > 0) { if (a.charAt(i-1)==b.charAt(j-1)) { LCS += a.charAt(i-1); i--; j--; } else { if (M[i][j-1] > M[i-1][j]) { j--; } else { i--; } } } LCS = reverse(LCS); } public String toString() { StringBuffer buf = new StringBuffer(); for (int i=0; i < M.length; i++) { for (int j = 0; j < M[0].length; j++) { buf.append(M[i][j]+" "); } buf.append("\n"); } buf.append("\n\n"+LCS); return buf.toString(); } public static void main (String[] args) { LCS lcs = new LCS( "ABCBDAB", "BDCABA"); System.out.println(lcs); } }