1、问题

求两个字符串的最大子序列

1)、子序列和子字符串有区别,子字符串(子串)必须连续,列如

s1 = "ABCDAB"  s2= "BBCDAAB"

s1和s2最大子序列有"BCDA","BCDB", "CDAB","ABAB","BCAB"...,子序列BCDA是s1和s2的一个LCS

s1和s2最大子字符串是"BCDA"

2、分析

为了找到最长的LCS,我们定义c[i][j]记录序列LCS的长度,公共子序列LCS长度为0,即c[i][j]=0,所以用i和j分别表示序列s1的长度和序列s2的长度,状态转移方程为

    c[i][j] = 0  如果i=0或j=0c[i][j] = c[i-1][j-1] + 1  如果s1[i-1] = s2[j-1]c[i][j] = max{ c[i-1][j], c[i][j-1] }  如果s1[i-1] != s2[j-1]

我们用一个新的数组C表示新LCS的数组,然后用数组B表示存储位置(值为1的时候表示C数组放的是左上角的数据加一,值为2的时候表示C数组放的左边的数据,值为3的时候,表示C数组放的上面的数据)

比如字符串s1 = "ABCADAB", s2 = "BACDBA"

动态规划之两个字符串的最大子序列相关推荐

  1. 两个字符串的最长公共子序列长度_【面试】动态规划-之最长公共子序列、最长公共子串问题...

    先来说明下什么是最长公共子序列,什么是是最长公共子串,举一个实际例子,myblogs与belong,最长公共子序列为blog(myblogs, belong),最长公共子串为lo(myblogs, b ...

  2. 动态规划:求两个字符串的最长公共子序列

    问题描述:求两个字符串的最长公共子序列. 思路:使用动态规划的思想,将问题分解为小的子问题. 假设两个字符串序列分别为:X{x0, x1, x2,......, xm}, Y{y0, y1, y2,. ...

  3. cstring查找子字符串_动态规划6:两个字符串的最长连续公共子串

    本文和前一篇:动态规划5-两个字符串的最长公共子序列类似,但公共子串必须是连续的,子序列不需要连续 字符串a,长度为m:a[1].a[2].a[3].a[4]....a[m] 字符串b,长度为n:b[ ...

  4. 字符串最长公共子序列python_求解两个字符串的最长公共子序列

    一,问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符串1:BDCABA:字符串2:ABCBDAB 则这两个字符串的最长公共子序列长 ...

  5. LeetCode 583. 两个字符串的删除操作(动态规划)

    1. 题目 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: "sea" ...

  6. 最长公共子序列算法 java_转【算法之动态规划(三)】动态规划算法之:最长公共子序列 最长公共子串(LCS)字符串相似度算法...

    1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 2.最长公共子串 其实这是一个序贯决策问题 ...

  7. 两个字符串的最长公共子序列长度_算法学习笔记(58): 最长公共子序列

    (为什么都更了这么多篇笔记了,这时候才讲这么基础的内容呢?因为我本来以为LCS这种简单的DP不用讲的,结果CF不久前考了LCS的变式,然后我发现由于自己对LCS一点都不熟,居然写不出来 ,于是决定还是 ...

  8. 【算法】【递归与动态规划模块】两个字符串的最长公共子数组

    目录 前言 问题介绍 解决方案 代码编写 java语言版本 c语言版本 c++语言版本 思考感悟 写在最后 前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批 ...

  9. python求最长公共子串_Python-求解两个字符串的最长公共子序列

    一.问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence).比如字符串1:BDCABA:字符串2:ABCBDAB.则这两个字符串的最长公共子序列长 ...

最新文章

  1. leetcode--删除链表的倒数第N个节点--python
  2. Linux Shell脚本实现根据进程名杀死进程
  3. 腾讯财付通漏洞遭***利用 威胁QQ彩钻等付费用户
  4. NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象
  5. 【机器视觉】 dev_update_var算子
  6. HDU - 6629 string matching(扩展KMP)
  7. 新挑战、新架构下的数据保护新需求
  8. jupyter notebook和python有什么区别_Jupyter Notebook 有哪些奇技淫巧?
  9. linux查看目录下 开头,Linux下ls如何看到.开头的文件
  10. win10无线投屏_如何实现win10无线投屏电视?电脑投屏电视的办法介绍
  11. ATK插件化开发:AtkPlug,AtkSocket
  12. 0 post 报红_【报Bug】升级2.3.0.20190919 后,原正常的request post 全部报 Status Code: 415 Unsupported Media Type...
  13. Java网络编程IO模型 --- BIO、NIO、AIO详解
  14. 【复旦微】国产MCU学习(持续更新)
  15. 央行数字货币在技术上是如何实现的
  16. 安装VMware出现Error 1406:could not write value installpath to key的解决办法
  17. 2019最新activiti6.0工作流搭建平台
  18. 广告投放中的ROI是怎么计算的?
  19. 【DeepLearning笔记】python规范书写
  20. python金融量化分析工资_量化金融分析师就业前景及薪酬怎么样?

热门文章

  1. NET问答: 如何使用 C# 自动化关闭电脑 ?
  2. 整合.NET WebAPI和 Vuejs——在.NET单体应用中使用 Vuejs 和 ElementUI
  3. C# 中的只读结构体(readonly struct)
  4. [开源] .Net ORM FreeSql 1.10.0 稳步向前
  5. 一文看懂async和“await”关键词是如何简化了C#中多线程的开发过程
  6. MySQL对JSON类型UTF-8编码导致中文乱码探讨
  7. 《ASP.NET Core 微服务实战》-- 读书笔记(第11章)
  8. 有了容器为什么kubernetes还需要Pod?
  9. 使用 Ocelot 匹配路由的方法匹配路由
  10. .NET开发者的机遇与Web Blazor基础(有彩蛋)