当前位置: 首页 > news >正文

最优解-最长公共子序列

问题描述

最长公共子序列(Longest Common Subsequence,LCS)即求两个序列最长的公共子序列(可以不连续)。比如3 2 1 4 5和1 2 3 4 5两个序列,最长公共子序列为2 4 5 长度为3。解决这个问题必然要使用动态规划。既然要用到动态规划,就要知道状态转移方程。我们令L[i][j] 表示序列 A 和序列 B 的最长公共子序列的长度,则状态转移方程如下:
若a[i]=b[j], 则 L[i][j]=L[i-1][j-1] +1
若a[i]!=b[j], 则 L[i][j]=max (L[i][j-1],L[i-1][j])
即:相同的取左上加1,不同取上和左中的最大值

package com.algorithm;
/*** long common Subseq*/
public class LCS {public static void main(String[] args) {char[] seq1 = new char[]{'a','b','d','c','b','a','b'};char[] seq2 = new char[]{'b','d','c','b','a','b','b'};int[][] dp = new int[seq1.length + 1][seq2.length + 1];//存储两个序列当前i和j的公共序列长度,多存储一位是空字符,默认都市0//初始化for (int i = 0; i < seq1.length + 1; i++) {dp[i][0] = 0;}for (int j = 0; j < seq2.length + 1; j++) {dp[0][j] = 0;}//计算dp,相同的取左上加1,不同取上和左中的最大值for(int i = 1; i < seq1.length; i++) {for(int j = 1; j<seq2.length; j++) {if(seq1[i] == seq2[j]) {dp[i][j] = dp[i-1][j-1]+1; //左上加1} else {dp[i][j] = Math.max(dp[i][j-1],dp[i-1][j]); //上和左中的最大值}}}//获取最长公共子序列长度,也就是dp中最大的那个值int max = 0;for(int i = 1; i < dp.length; i++) {for (int j = 1; j < dp.length; j++) {max = Math.max(max, dp[i][j]);}}System.out.println("long common seq size:"+max);}
}

在这里插入图片描述
从右下角开始,如果有dp[i][j]==dp[i-1][j-1]+1则往左上走一格。得到整个子序列的求解过程。b,c,b,a,b

http://www.lryc.cn/news/283838.html

相关文章:

  • el-tree获取当前选中节点及其所有父节点的id(包含半选中父节点的id)
  • 新上线一个IT公司微信小程序
  • MCAL配置-PWM(EB23.0)
  • v-if和v-for哪个优先级更高?
  • Mapstruct 常用案例(持续更新.).
  • QT基础篇(10)QT5网络与通信
  • 【Leetcode】269.火星词典(Hard)
  • opencv_模型训练
  • python PyQt5的学习
  • 3.goLand基础语法
  • 计算机硬件 5.2组装整机
  • Docker搭建MySQL主从数据库-亲测有效
  • PyTorch 中的距离函数深度解析:掌握向量间的距离和相似度计算
  • 【Vue技巧】vue3中不支持.sync语法糖的解决方案
  • 设计模式⑦ :简单化
  • Java:选择哪个Java IDE好?
  • unity打包apk后网络请求提示unknown error处理
  • 力扣 | 11. 盛最多水的容器
  • 史上最全EasyExcel
  • MySQL---事务的四大特性详解(高频面试题)
  • 为 OpenCV 编写文档(二)
  • HUAWEI华为MateStation S台式机电脑12代PUC-H7621N,H5621N原装出厂Windows11.22H2系统
  • 机器学习:holdout法(Python)
  • 【GaussDB数据库】序
  • 代码随想录算法训练营第三十八天|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 大数据开发之Hadoop(优化新特征)
  • 在使用go语言开发的时候,程序启动后如何获取程序pid
  • HFSS笔记/信号完整性分析(二)——软件仿真设置大全
  • mysql主从报错:Last_IO_Error: Error connecting to source解决方法
  • AOI与AVI:在视觉检测中的不同点和相似点