Wednesday, November 4, 2015

Longest common subsequesce

import java.util.*;

public class Temp{
public static void main(String args[]){

StringBuilder sb=new StringBuilder();
String str1="AGGTAB";
String str2="GXTXAYB";
int c[][]=new int[str1.length()+1][str2.length()+1];

for(int i=0;i<=str2.length();i++){
c[0][i]=0;
}

for(int j=0;j<=str1.length();j++){
c[j][0]=0;
}

for(int i=1;i<=str1.length();i++){
for(int j=1;j<=str2.length();j++){
if(str1.charAt(i-1)==str2.charAt(j-1)){
c[i][j]=1+c[i-1][j-1];
}
else{
c[i][j]=(c[i][j-1]>=c[i-1][j])?c[i][j-1]:c[i-1][j];
}
}
}


System.out.println(c[str1.length()][str2.length()]+"\n");

for(int i=0;i<=str1.length();i++){
for(int j=0;j<=str2.length();j++){
System.out.print(c[i][j]);
}
System.out.println();
}


// print LCS.....

int i=str1.length();
int j=str2.length();

while(i>0 && j>0){
if(str1.charAt(i-1)==str2.charAt(j-1)){
sb.append(str1.charAt(i-1)+"");
i--;
j--;
}
else{
if(c[i][j-1]>=c[i-1][j]){
j--;
}
else{
i--;
}

}
System.out.println(i + " "+ j +"\n"  );

}

System.out.println(sb.reverse());


}
}

No comments:

Post a Comment