标签:
public static void Lcs_Length(String X,String Y,int c[][]) { X=" "+X; Y=" "+Y; for(int i=1;i<X.length();i++) { c[i][0]=0; } for(int j=0;j<Y.length();j++) { c[0][j]=0; } for(int i=1;i<X.length();i++) { for(int j=1;j<Y.length();j++) { if(X.charAt(i)==Y.charAt(j)) { c[i][j]=c[i-1][j-1]+1; } else if(c[i-1][j]>=c[i][j-1]) { c[i][j]=c[i-1][j]; } else { c[i][j]=c[i][j-1]; } } } } public static void Print_Lcs(int c[][],String X,int i,int j) { if(i==0||j==0) return; if(c[i][j]==c[i-1][j]) { Print_Lcs(c,X,i-1,j); } else if(c[i][j]==c[i][j-1]) { Print_Lcs(c,X,i,j-1); } else { Print_Lcs(c,X,i-1,j-1); System.out.print(X.charAt(i-1)+" "); } } public static void main(String[] args) { String X="ABCBDAB"; String Y="BDCABA"; int c[][]=new int[X.length()+1][Y.length()+1]; Lcs_Length(X,Y,c); for(int i=0;i<c.length;i++) { for(int j=0;j<c[i].length;j++) System.out.print(c[i][j]+" "); System.out.println(); } Print_Lcs(c,X,X.length(),Y.length()); }
标签:
原文地址:http://www.cnblogs.com/liuhg/p/LCSAlgo.html