最长公共子序列穷举法java
时间: 2024-03-20 19:38:09 浏览: 214
最长公共子序列(Longest Common Subsequence,简称LCS)是指在两个序列中找到最长的公共子序列的问题。穷举法是一种解决LCS问题的方法之一。
穷举法的基本思想是通过遍历所有可能的子序列,然后比较它们的长度,找到最长的公共子序列。
以下是使用穷举法解决LCS问题的Java代码示例:
```java
public class LCS {
public static int lcs(String s1, String s2) {
int m = s1.length();
int n = s2.length();
int[][] dp = new int[m + 1][n + 1];
for (int i = 0; i <= m; i++) {
for (int j = 0; j <= n; j++) {
if (i == 0 || j == 0) {
dp[i][j] = 0;
} else if (s1.charAt(i - 1) == s2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[m][n];
}
public static void main(String[] args) {
String s1 = "ABCD";
String s2 = "ACDF";
int length = lcs(s1, s2);
System.out.println("最长公共子序列的长度为:" + length);
}
}
```
上述代码中,我们使用一个二维数组`dp`来记录最长公共子序列的长度。通过两层循环遍历字符串`s1`和`s2`的所有字符,根据字符是否相等来更新`dp`数组的值。最后返回`dp[m][n]`即为最长公共子序列的长度。
阅读全文