public class LCS {
public static String A = "13456778";
public static String B = "357486782";
public static void main(String[] args) {
int[][] dp = new int[A.length() + 1][B.length() + 1];
for (int i = 1; i <= A.length(); i++) {
for (int j = 1; j <= B.length(); j++) {
if (A.charAt(i - 1) != B.charAt(j - 1)) {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
} else {
dp[i][j] = dp[i - 1][j - 1] + 1;
}
}
}
StringBuilder s=new StringBuilder();
int i = A.length(), j = B.length();
while (i>0&&j>0) {
if(A.charAt(i-1)!=B.charAt(j-1)){
if(dp[i-1][j]>dp[i][j-1]){
i--;
}else{
j--;
}
}else {
s.append(A.charAt(i-1));
i--;
j--;
}
}
System.out.println("最长公共子序列:"+s.reverse().toString());
System.out.println("最长公共子序列长度"+dp[A.length()][B.length()]);
}
}
最长公共子序列(LCS)
最新推荐文章于 2022-03-28 22:34:58 发布