DP求最长公共子序列长度

/**
*
* @author Administrator
*@version 2011.06.15
*动态规划法求最长公共子序列
*/
public class DPCommonSubstr {

/**
* @param args
*/
public static void main(String[] args) {
Object a[]={null,1,2,3,4,5,6,7};
Object b[]={null,1,2,3,-1,6,7,8};
MaxCommonSubSeq(a,b);

}
private static void MaxCommonSubSeq(Object a[],Object b[]){
int alen=a.length;
int blen=b.length;
//Object comm[] = new Object[alen];
//len[i][j]记录a的前i个序列与b的前j个学列的最长公共子序列长度
int len[][] = new int[alen][blen];
for(int i=0;i<alen;i++){
len[i][0]=0;
}
for(int j=0;j<blen;j++){
len[0][j]=0;
}
for(int i=1;i<alen;i++){
for(int j=1;j<blen;j++){
if(a[i]==b[j]){
len[i][j]=len[i-1][j-1]+1;

}
else{
len[i][j]=Math.max(len[i][j-1], len[i-1][j]);
}

}
}
System.out.println(len[alen-1][blen-1]);
}

}

你可能感兴趣的:(J#)