import java.util.HashSet;
public class MyLCS {
public static int dp[][] = null;
public static String str1 = null;
public static String str2 = null;
//用于存放结果
public static char[] result = null;
//用于结果去重
public static HashSet<String> set = new HashSet<String>();
public static void printLCS(int x, int y, int cur){
if(x >= str1.length() || y >= str2.length()){
String str = new String(result);
if(set.contains(str)) return;
set.add(str);
System.out.println(str);
return;
}
if(str1.charAt(x) == str2.charAt(y)){
result[cur] = str1.charAt(x);
printLCS(x+1,y+1,cur+1);
}else if(dp[x+1][y] > dp[x][y+1]){
printLCS(x+1,y,cur);
}else if(dp[x+1][y] < dp[x][y+1]){
printLCS(x,y+1,cur);
}else{
printLCS(x+1,y,cur);
printLCS(x,y+1,cur);
}
}
public static void getLCS(){
for(int i=str1.length()-1; i>
最长公共子序列(可打印所有子序列)
最新推荐文章于 2022-10-31 10:06:13 发布
本文展示了如何使用Java编程实现求解两个字符串的最长公共子序列(LCS),并输出所有可能的LCS。通过动态规划方法计算LCS的长度,并借助HashSet进行结果去重,确保打印出所有不重复的LCS。
摘要由CSDN通过智能技术生成