动态规划解决最长公共子序列
动态规划解决最长公共子序列
- 问题描述
给定两个序列,例如 X = “ABCBDAB”、Y = “BDCABA”,求它们的最长公共子序列的长度。 - 递归关系
c[i][j]={0,i=0,j=0 c[i−1][j−1]+1i,j>0;xi=yj maxc[i][j−1],c[i−1][j]i,j>0;xi≠yj - 代码实现
public class LCS {public static void main(String[] args) {Scanner sc=new Scanner(System.in);String a=sc.nextLine();String b=sc.nextLine();System.out.println(lcs(a,b));sc.close();}private 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;}}}for (int i = 1; i < m+1; i++) {for (int j = 1; j < n+1; j++) {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];}
}
动态规划解决最长公共子序列相关推荐
- 用动态规划解决最长公共子序列
要求:最长公共子序列,英文缩写为LCS(Longest Common Subsequence).其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S ...
- 用动态规划解决最长公共子序列问题 C语言,动态规划之最长公共子序列问题 C++实现...
这个问题经常运用在判断两种生物的相似度--DNA比对上.对比俩串的方式有很多种,例如如果一个串是另一个的字串,那么可以说两个串是相似的:如果将一个串转换为另一个串的操作很少,那么也可以说这两个串是相似 ...
- 动态规划解最长公共子序列(LCS)(附详细填表过程)
目录 相关概念 子序列形式化定义: 公共子序列定义: 最长公共子序列(以下简称LCS): 方法 蛮力法求解最长公共子序列: 动态规划求解最长公共子序列: 分析规律: 做法: 伪代码: 下面演示下c数组 ...
- javascript写算法(一) 动态规划:最长公共子序列
csdn是疯了吗,右下角的广告是一个人站在猪屁股后面打它...看了一下居然是baidu算出来的广告嵌在了iframe里,fixed to viewport,真是够了.最近还频频出现的广告是一个光头男子 ...
- 动态规划表格法解决最长公共子序列(LCS)问题
3.5 最长公共子序列(LCS) 前言:图片是博主自己画的,转载请注明出处哦 3.5.1 问题描述 最长公共子序列(Longest Common Subseuence,LCS)问题:给定两个字符串,求 ...
- 【动态规划】最长公共子序列与最长公共子串
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与 ...
- 动态规划解决方案最长公共子序列问题(开启)
动态规划 常常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题.简单地採用把大问题分解成子问题.并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数添加. 为 ...
- 动态规划之----最长公共子序列
动态规划算法的基本要素: 1)最优子结构 当问题的最优解包含了其子问题的最优解时,称该问题具有最优子结构性质.问题的最优子结构性质提供了该问题可用动态规划算法求解的最重要线索. 在动态规划算法中,利用 ...
- 【谈谈】动态规划——求最长公共子序列
首先,我们要搞清楚所谓最长公共子序列的概念.不然很容易把它和最长公共子串混淆,两者区别是:子序列只需要字符保持相对顺序,并不要求像公共字串那样组成字符还需连续. 问题: 给定两个字符串数组序列: X[ ...
最新文章
- dist包编译html_gulp4 多页面项目管理打包(html, es6,less编译压缩版本控制)
- 潜移默化学会WPF--线程巧用(一)
- java.lang.ClassNotFoundException
- Vue.js 技术揭秘学习 (3) render
- linux7启动某个服务器,如何在单用户模式下启动RHEL 7 CentOS 7服务器
- c++ 线性回归_模型之母:简单线性回归的代码实现
- java itext word_Java使用iText生成word文件的解决方案 | 学步园
- Spring Boot 服务优雅关闭方式汇总, Spring Boot 打包排除指定文件
- SPSS 项目分析(图文+数据集)【SPSS 032期】
- 用记事本写表白html,抖音电脑弹窗表白代码怎么弄_记事本vbs告白代码写法介绍_抖音表白套路方法分享...
- STM32压力传感器信号采集-24位AD HX720 HX711 CS5530 CS5532 C#上位机
- 【小程序】用canvas 实现一个简易的移动端名片可编辑小程序
- openwrt mt7620a添加wifi指示灯(wled)的方法
- 深入了解机器学习 (Descending into ML):训练与损失
- android九宫格控件,IKNinePhotoView是一个开源的Android九宫格控件
- 基于独立分量分析的语音信号盲源分离
- 马科维茨投资组合理论(均方模型)学习笔记——基于Matlab(四)
- 【Pandas】获取DataFrame的行数和列数
- Intel NUC11 在ubuntu系统下不能正常使用外接麦克风的问题解决方法
- 使用VMware安装黑苹果