当前位置:   article > 正文

最长公共子序列算法思想的应用_算法中最长公共子序列的应用

算法中最长公共子序列的应用

最长公共子序列解答:

  1. public class Test1 {
  2. public static void main(String[] args) {
  3. char[] chars1 = "ABCBDAB".toCharArray();
  4. char[] chars2 = "BDCABA".toCharArray();
  5. LCS(chars1, chars2);
  6. }
  7. public static void LCS(char[] chars1, char[] chars2) { // 最长公共子序列
  8. int len1 = chars1.length;
  9. int len2 = chars2.length;
  10. int[][] dp = new int[len1+1][len2+1];
  11. dp[0][0] = 0;
  12. for(int i = 1; i <= len1; i++) {
  13. for(int j = 1; j <= len2; j++) {
  14. if(chars1[i-1] == chars2[j-1]) {
  15. dp[i][j] = dp[i-1][j-1] + 1;
  16. }
  17. else {
  18. dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]);
  19. }
  20. }
  21. }
  22. // System.out.println(dp[len1][len2]); // 最长公共子序列长度
  23. getres(dp, len1, len2, chars1);
  24. }
  25. public static void getres(int[][] dp, int i, int j, char[] chars) {
  26. StringBuilder sb = new StringBuilder();
  27. while(i != 0 && j != 0) {
  28. if(dp[i][j] == dp[i-1][j]) i--;
  29. else if(dp[i][j] == dp[i][j-1]) j
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/87430
推荐阅读
相关标签
  

闽ICP备14008679号