LCS最长公共序列java实现模板

6人阅读 评论(0) 收藏 举报
分类:
  • 不提供思想 提供了就是制作车轮子.网上太多了没意义

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
public class Main {

    public static void main(String[] args) {


        String a = "abcdef";
        String b = "xb1d2xf3";

        int[][] calc = calc(a.toCharArray(), b.toCharArray());
        int flag=Integer.MAX_VALUE;
        //输出序列

        for (int i = 1; i < calc[0].length; i++) {
            if(calc[calc.length-1][i]>calc[calc.length-1][i-1]){
                System.out.println(b.charAt(i-1));
            }
        }

    }


    public static StringBuilder sb= new StringBuilder("");
    //计算最长序列
    //int[][] 封装对象的话 输出序列会不用循环 内部封装链表.由于简单这里不写了 
    public static int[][] calc(char[]a,char b[]){

        int flag[][]=new int[a.length+1][b.length+1];


        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < b.length; j++) {
                if(a[i]==b[j]){ 
                    flag[i+1][j+1]=flag[i][j]+1;
                }else{
                    flag[i+1][j+1]=Math.max(flag[i][j+1], flag[i+1][j]);
                }
            }
        }
        return flag;
    }

}
查看评论

C++实现——LCS-最大公共子串长度

//求两个字符串的最长公共子串的长度(子串不一定是原串中的连续子串组成) //LCS //使用动态规划 #include #include #include using namespace s...
  • langmanqishizaijia
  • langmanqishizaijia
  • 2016-04-08 15:14:04
  • 1720

【LeetCode】Longest Common Subsequence最长公共子序列(求出某一解+LCS长度) - Medium

Longest Common Substring Given two strings, find the longest common substring.Return the length of i...
  • ljyljyok
  • ljyljyok
  • 2017-09-09 09:12:00
  • 1623

动态规划算法求lcs(最长公共子串)之Java代码实现

LCS(Longest Common Subsequence) 就是求两个字符串最长公共子串的问题。 比如:   String str1 = new String("adbccadebbca");...
  • earbao
  • earbao
  • 2015-12-29 11:17:09
  • 4288

Java-LCS最长公共子序列(动态规划实现)

一个序列S任意删除若干个字符得到新序列T,则T称为S的子序列。若两个序列X和Y的公共子序列中,长度最长的那个字序列称为X和Y的最长公共子序列(LCS)。 Xi表示字符串的前i个字符,Yj表示字符串的前...
  • qq_30507287
  • qq_30507287
  • 2016-10-16 14:40:20
  • 3525

最长公共子序列python实现

最长公共子序列是动态规划基本题目,下面按照动态规划基本步骤解出来。 1.找出最优解的性质,并刻划其结构特征 序列a共有m个元素,序列b共有n个元素,如果a[m-1]==b[n-1],那么a[:m]和b...
  • littlethunder
  • littlethunder
  • 2014-05-12 17:05:26
  • 10836

最长公共子序列(LCS)问题(连续子序列)的三种解法

最长公共子序列(LCS)问题有两种方式定义子序列,一种是子序列不要求不连续,一种是子序列必须连续。上一章介绍了用两种算法解决子序列不要求连续的最终公共子序列问题,本章将介绍要求子序列必须是连续的情况下...
  • x_xiaoge
  • x_xiaoge
  • 2012-03-21 00:46:57
  • 5766

【动态规划】LCS算法:求两字符串最大公共字符串(连续)

LCS算法的应用 问题描述:求两字符串的连续最大公共子字符串 思路:根据上文LCS算法求解两字符串的最大公共子序列(不连续),可以得到求解连续子字符串的启示,如图所示,构造LCS矩阵vec,将两个...
  • yebanxin
  • yebanxin
  • 2016-08-12 12:46:41
  • 2351

算法导论-----最长公共子序列LCS(动态规划)

目录 一.概念梳理 二.最长公共子序列解决方案 方案1:蛮力搜索策略 方案2:动态规划策略 三、C代码实现 实现1 实现2(空间优化) 一.概念梳理  1. 子序列(subsequence): ...
  • so_geili
  • so_geili
  • 2016-12-19 22:51:07
  • 4663

lintcode-最长公共子序列-77

给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。 样例 给出"ABCD" 和 "EDCA",这个LCS是 "A" (或 D或C),返回1 给出 "ABCD...
  • ljlstart
  • ljlstart
  • 2015-09-10 21:09:29
  • 1361

【算法导论学习-29】动态规划经典问题02:最长公共子序列问题(Longest common subsequence,LCS)

《算法导论中》动态规划经典问题——最长公共子序列问题(Longest common subsequence,LCS)的java实现...
  • BrilliantEagle
  • BrilliantEagle
  • 2014-09-03 21:42:19
  • 1543
    个人资料
    等级:
    访问量: 50万+
    积分: 6944
    排名: 4172