动态规划(四)--最长公共子序列
/*** @author BiangHoo** 2013年9月11日*/
public class LCS {public static void main(String[] args) {String X[] = {"A","B","C","B","D","A","B"};String Y[] = {"B","D","C","A","B","A"};LCS_Length(X,Y);}static void display(String array[][]){for(int i=0;i<array.length;i++){for(int j=0;j<array[0].length;j++){System.out.print(array[i][j]+" ");}System.out.print("\n");}System.out.print("\n"+"the LCS is: ");}static void LCS_Length(String X[],String Y[]){int xlen = X.length;int ylen = Y.length;String b[][] = new String[xlen+1][ylen+1];int c[][] = new int[xlen+1][ylen+1];for(int i=0;i<xlen+1;i++){c[i][0] = 0;}for(int i=0;i<ylen+1;i++){c[0][i] = 0;}for(int i=1;i<xlen+1;i++){//bottom to topfor(int j=1;j<ylen+1;j++){if(X[i-1]==Y[j-1]){c[i][j] = c[i-1][j-1]+1;b[i][j] ="arrow";}else if(c[i-1][j] >= c[i][j-1]){c[i][j] = c[i-1][j];b[i][j] = "up";}else{c[i][j] = c[i][j-1];b[i][j] = "left";}}}display(b);Print_LCS(b,X,xlen,ylen);}static void Print_LCS(String [][] b,String[]X,int i,int j){if(b[i][j] == null){return ;}if(b[i][j] == "arrow"){Print_LCS(b,X,i-1,j-1);System.out.print(X[i-1]+" ");}else if(b[i][j] == "up"){Print_LCS(b,X,i-1,j);}else{Print_LCS(b,X,i,j-1);}}
}
转载于:https://www.cnblogs.com/james1207/p/3325007.html
动态规划(四)--最长公共子序列相关推荐
- c语言最长公共子序列_序列比对(二十四)——最长公共子序列
原创: hxj7 本文介绍如何求解两个字符串的最长公共子序列. 最长公共子序列问题 前文<序列比对(二十三)--最长公共子字符串>介绍了如何求解两个字符串的最长公共子字符串,本文将介绍如何 ...
- 动态规划解决最长公共子序列
动态规划解决最长公共子序列 问题描述 给定两个序列,例如 X = "ABCBDAB".Y = "BDCABA",求它们的最长公共子序列的长度. 递归关系 c[i ...
- 动态规划解最长公共子序列(LCS)(附详细填表过程)
目录 相关概念 子序列形式化定义: 公共子序列定义: 最长公共子序列(以下简称LCS): 方法 蛮力法求解最长公共子序列: 动态规划求解最长公共子序列: 分析规律: 做法: 伪代码: 下面演示下c数组 ...
- javascript写算法(一) 动态规划:最长公共子序列
csdn是疯了吗,右下角的广告是一个人站在猪屁股后面打它...看了一下居然是baidu算出来的广告嵌在了iframe里,fixed to viewport,真是够了.最近还频频出现的广告是一个光头男子 ...
- 【动态规划】最长公共子序列与最长公共子串
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- 实验二 动态规划算法 最长公共子序列问题
基本题一:最长公共子序列问题 一.实验目的与要求 1.熟悉最长公共子序列问题的算法: 2.初步掌握动态规划算法: 二.实验题 若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,z ...
- 动态规划求解最长公共子序列
前言 推出一个新系列,<看图轻松理解数据结构和算法>,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握.本系列包括各种堆.各种队列.各种列表.各种树.各种图.各种排序等等几十篇的 ...
- 动态规划解决方案最长公共子序列问题(开启)
动态规划 常常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题.简单地採用把大问题分解成子问题.并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数添加. 为 ...
- 动态规划之----最长公共子序列
动态规划算法的基本要素: 1)最优子结构 当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质.问题的最优子结构性质提供了该问题可用动态规划算法求解的最重要线索. 在动态规划算法中,利用 ...
- 两个字符串的最长公共子序列长度_【面试】动态规划-之最长公共子序列、最长公共子串问题...
先来说明下什么是最长公共子序列,什么是是最长公共子串,举一个实际例子,myblogs与belong,最长公共子序列为blog(myblogs, belong),最长公共子串为lo(myblogs, b ...
最新文章
- [转帖]C#执行SQL脚本,读取XML文件
- rewrite 帮助实现页面静态化
- Fedora 30将获得Bash 5.0,淘汰Yum推迟到Fedora 31
- java 优化线程_Java | 多线程调优(下):如何优化多线程上下文切换?
- 学完计组后,我马上在「我的世界」造了台显示器,你敢信?
- C++语言类的详解和示例
- 学习Caffe(一)使用Caffe
- 多线程和并发管理 .NET多线程服务
- TbSchedule的简单使用及其配置
- ImageJ的自动二值算法C++实现
- word中插入分割线
- 【黑灰产犯罪研究】DDOS攻击
- CAN总线隔离器介绍
- jquery事件绑定的问题Uncaught TypeError: $(...).live is not a function at HTMLDocument.<anonymous> (ex5_
- LeetCode HOT 100 --- 2021/7/30
- 父---->曾孙,跨多层组件传值方法provide/inject
- 荣耀v10+android+8.1,别在纠结:华为荣耀V10和荣耀10的真正的不同在
- jwplayer使用常见问题
- 登顶KITTI!Mix-Teaching:适用于单目3D目标检测的半监督方法【清华大学】
- 盟军敢死队2 - 3D导航网格浏览器