最长公共子序列和最长公共子串长度简单解法

最长公共连续子串(Longest Common Substring) 上一篇博客,介绍了最长公共子序列(Longest Common Sequence, LCS),本文介绍最长公共连续子串。与序列不同,子串要求字符是连续的,而子序列可以不连续。下面同样用LCS表示最长公共连续子串。首先分析一下,如果暴力求解法的时间复杂度,两个字符串A和B长度分别为x和y,则字符串的子串个数分别为n1 = x + (x-1) + ... + 1 = x(x-1) / 2n2 = y ... 阅读详情
  • 这是最长公共子序列长度的dp解法,注意输入格式问题,可以根据具体情况修改。(gets接收空格,scanf放弃空格)
#include <bits/stdc++.h>
using namespace std;
char A[100],B[100];
int dp[100][100];

int main()
{
    gets(A+1);gets(B+1);
    int lenA = strlen(A+1),lenB = strlen(B+1);
    for(int i=0;i<=lenA;++i) dp[i][0]=0;
    for(int i=0;i<=lenB;++i) dp[0][i]=0;

    for(int i=1;i<=lenA;++i)
        for(int j=1;j<=lenB;++j){
            if(A[i]==B[j])
                dp[i][j]=dp[i-1][j-1]+1;
            else
                dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
        }
    printf("%d\n",dp[lenA][lenB]);
    return 0;
}
  • 最长公共子串长度,将上面的 dp[i][j]=max(dp[i-1][j],dp[i][j-1])修改成=0,然后从dp数组中解出最大值输出即可。
#include <bits/stdc++.h>
using namespace std;
char A[100],B[100];
int dp[100][100];

int main()
{
    gets(A+1);gets(B+1);
    int lenA = strlen(A+1),lenB = strlen(B+1);
    for(int i=0;i<=lenA;++i) dp[i][0]=0;
    for(int i=0;i<=lenB;++i) dp[0][i]=0;
    int n=0;
    for(int i=1;i<=lenA;++i)
        for(int j=1;j<=lenB;++j){
            if(A[i]==B[j])
                {dp[i][j]=dp[i-1][j-1]+1;if(dp[i][j]>n) n=dp[i][j];}
            else
                dp[i][j]=0;
        }

    printf("%d\n",n);
    return 0;
}
【Python】最长公共子序列LCS LCS的定义 最长公共子序列,即Longest Common Subsequence,LCS。 一个序列S任意删除若干个字符得到新序列T,则T叫做S的子序列; 两个序列X和Y的公共子序列中,长度最长的那个,定义为X和Y的最长公共子序列。 字符串13455 与245576的最长公共子序列为455 字符串acdfg与adfc的最长公共子序列为adf 注意区别最长公共子串(Longest C... 阅读详情

相关推荐

纽扣电池供电系统优化:NBM5100A与STM32F745VG组合方案

在低功耗物联网设备设计中,能量管理是核心挑战之一。纽扣电池因其体积小、成本低被广泛采用,但瞬时大电流需求常导致电压骤降和寿命缩短。通过超级电容缓冲技术,可以实现能量的细水长流式存储与集中释放。NBM5100A电源管理IC与STM32F745VG微控制器的组合方案,采用双阶段能量管理架构,先以恒定小电流充电,再通过电容释放大电流。这种方案不仅能提升系统稳定性,还能延长电池寿命3-5倍,特别适合智能门锁、无线传感器等需要间歇性高功率输出的场景。

weixin_29194255的博客 257

最长公共子序列--求最长公共子串长度

最长公共子序列算法应用非常广泛:比如染色体中DNA片段的的研究,基于最长公共子序列的微博谣言溯源研究等等。所以掌握与应用该基础算法是十分必要的。

Austin_的博客 1298

做蛋白组学数据分析,竟然还不会使用DIA-NN软件,走过路过不要错过,进来免费学习!!!

蛋白组学分析工具DIA-NN使用

wcy1995427的博客 9865

最长公共子串

首先这题和”最长重复子串”不一样,本题相对于”最长重复子串”的条件更加苛刻一点,”最长重复子串”选择的子串可以不连续。我们需要开一个二维数组,内存为4*10000*10000,大约400MB,很明显这里会爆栈,所以我们得优化掉其中的一维,使其变为一维。那么我们怎么优化呢,我们可以定义一个dp[N],其中dp[i]代表的是以str[i]结尾的最长的公共子串的长度为dp[i].这里我们可以如果使用暴力算法,由于最长的子串只有10000,暴力算法的时间复杂度为O(N^2),时间复杂度勉强可以达到。

m0_70182646的博客 175

闲人闲谈PS之十二——WBS-BOM在装备制造项目中的实战解析

本文深入解析了WBS-BOM在装备制造项目中的核心应用。针对按订单设计/生产的行业痛点,WBS-BOM作为项目专属物料清单,完美连接SAP PS与PP模块,确保MRP能基于项目进行精准物料需求计算,实现从设计到生产的全链路项目化跟踪与管理。

weixin_29284885的博客 399

Ansys Lumerical 启动时出现 Error: Could not connect to Ansys license server specified at 1055@ 的一种解决办法

考虑到 2020 版的时候是直接在全局变量里指定具体地址,但是 2024 版本是写成 1055@localhost ,并且之后在站里搜相关 Ansys 的问题都指向 1055 端口被占用,虽然问题不一样,但是本着死马当活马医,就按照。我最近在跑超透镜结构,听说2024版本现在有GPU加速可以用,就把Lumerical从2020升到2024版本,结果发现一开头的破解办法完全不一样了。一开始安装的时候以为2020没有删干净,导致2024版的安装一直锁着目标地址,解决办法参考。的办法来操作,在关闭了。

qq_51404184的博客 5752

最长公共子序列问题(要求输出路径)

Link:http://www.51nod.com/tutorial/course.html#!courseId=4 一些概念: (1)子序列: 一个序列A = a1,a2,……an,中任意删除若干项,剩余的序列叫做A的一个子序列。也可以认为是从序列A按原顺序保留任意若干项得到的序列。 例如: 对序列 1,3,5,4,2,6,8,7来说,序列3,4,8,7 是它

林下的码路 1592

粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解

粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization),缩写为 PSO, 是近年来由J. Kennedy和R. C. Eberhart等开发的一种新的进化算法(Evolutionary Algorithm - EA)。

猫敷雪 893

动态规划(4):最长公共子序列长度

题目 给定两个字符串(或数字序列) A 和B, 求二个字符串,使得这个字符串是A 和B 的最 长公共部分的长度(子序列可以不连续) 样例 输入 sadstory adminsorry 输出 6 题解 思路: 如果两个串的最后结尾的字符相同,其最长公共子序列长度=分别去掉结尾字符剩下的部分的最长公共子序列长度+1; 不相同,则转化为相同:在其中任意一个串上补与另一个串结尾字符相等的字符,然后转化成...

i6223671的博客 1786

ABAP链接外围数据库SQL实战案例

这是一个ABAP 直接读取SQL数据库数据的实例,以此种方式可以将SAP与外围的系统做一些集成,比如生产,SAP本身生产这部分是弱项,管不了那么细,很多车间的数据都是在MES系统,如管理上需要则可以将MES的一些数据自动读取过来,结合SAP本身的业务数据,做一些分析是比较方便的。 1、首先在SAP里建立数据库链接:DBCO ,直接增加一条记录,填上数据库的相关信息:IP地址、数据库名、账号SA、密码这些。 2、开发程序,设置成自动运行的计划,固定时间自动读取SQL里的数据,保存到SAP自定义表.

heng0757的专栏 1511

从数据读取到业务事件:理解 ABAP CDS 视图的目的与选型(含 RAP、扩展与分析场景)

CDS视图在SAP S/4HANA中不仅是数据查询工具,更是语义模型和运行时能力的载体。它通过分层架构(基础视图、组合视图、消费视图等)实现数据复用与场景适配,支持UI、分析、事务处理等多样化消费。视图类型包括提供数据访问的接口视图(I_前缀)、消费视图(C_前缀)和事务视图,以及不提供数据访问的扩展视图。这种分层设计确保了数据模型的稳定性与扩展性,同时支持自定义字段和上下文感知分析。正确理解CDS视图的用途和分层规则,能帮助开发者构建更健壮、可维护的SAP应用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 302

最长公共子序列长度的四种解法

本文使用四种不重复的方法求解最长公共子序列的长度。

qq_43213240的博客 5136

通信算法之281:大疆DJI无人机ID-DJI DroneID开源工程-相关问题-协议信息问题

ZC序列的参数未知。但是,使用第一个或第二个零相关序列对每个OFDM符号进行相位调整,对于直接相邻于使用过的零相关序列的时间上的OFDM符号工作得很好,但对其它符号效果不佳。由于符号的顺序没有改变,而9 OFDM符号情况下的第一个OFDM符号没有用处,因此本存储库中的脚本对待所有突发都是有9个OFDM符号的,并且不对第一个OFDM符号做任何处理。棘手的地方在于需要生成比数据载波数量(始终为600)多1个的零相关序列,零化中间元素,将生成的样本映射到FFT的中心(采样率决定bin的数量),然后计算IFFT。

leegang12的专栏 1620

最长公共子串(两种解法)

最长公共子串 题目描述 给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。 示例1 输入 "1AB2345CD","12345EF" 返回值 "2345" 备注: 1 ≤∣str1∣,∣str2∣≤5000 代码如下: import java.util.*; public class Solution { /** * longest common substring * @param str1 string字符串 the s

m0_48810566的博客 3213

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

动态规划---求最长公共子序列和最长公共子串(C语言)

参考:https://blog.youkuaiyun.com/someone_and_anyone/article/details/81044153 一、求最长公共子序列 1、问题描述: 从一个给定的串中删去(不一定连续地删去)0个或0个以上的字符,剩下地字符按原来顺序组成的串。例如:“ ”,“a”,“xb”,“aaa”,“bbb”,“xabb”,“xaaabbb”都是串“xaaabbb”的子序列。(例子中的...

优快云 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Python最长公共子串和最长公共子序列的实现

最长公共子串 (The Longest Common Substring)     LCS问题就是求两个字符串最长公共子串的问题。解法就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0。然后求出对角线最长的1序列,其对应的位置就是最长匹配子串的位置。#coding:utf-8 def find_lcs1(s1, s2): m=[[0 for i i

wateryouyo的博客 3万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

多维动态规划-面试高频!-最长公共子序列和最长公共子串、回文串-c++实现和详解

中等给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。text2。

1569

史上最全最丰富的“最长公共子序列”、“最长公共子串”问题的解法与思路

花了一天时间把一直以来的“最大子序列”、“最大递增子序列“、”最大公共子序列“、“最长公共子串”等问题总结了一下。其中参考了若干博文,都备注引用。 首先子序列是指一个一个序列中,由若个数(字母)组成,然后从中任意删掉几个数(字母),保留剩下的数(字母)构成了一个序列,即称子序列。(或者从一个序列中,任意选取若干数或字符,按照这些数或字符原来的排序组成新的序列,即称子序列) 子串是指在一个字符串

王小东大将军的博客 2万+

最长公共子序列(LCS)

整合资料编写,志愿时长认定

2301_77033392的博客 5329

【搞定算法】字符串的最长公共子串和最长公共子序列

目 录: 1、求两个字符串的最长公共子串 2、求两个字符串的最长公共子序列 动态规划实现 求两个字符串的最长公共子序列的长度 1、求两个字符串的最长公共子串 要求:求两个字符串的最长公共子串,如:“abcdefg” 和 “adefgwgeweg” 的最长公共子串为 “defg”(子串必须是连续的)。 暴力解法【O(N^2)】 1、选出两个字符串中长度较短的那个字符串; ...

Java学习 1149

LCS(最长公共子串)和最长公共子串(DP) python3实现

一、LCS(最长公共子串)python实现 LCS问题就是求两个字符串最大相同的公共子串;我们现假设有两个字符串X,Y。其长度分别为m,n 我们从X,Y两个字符串的最后一个字符串开始看起 如果 Xm = Yn: LCS(X, Y) = LCS(Xm-1, Yn-1)+ "Xm" 如果Xm != Yn: LCS(X,Y) = max(LCS(Xm-1,Yn), LCS(Xm, Y...

永远飞翔的鸟 2251

python最长公共连续子串_详解Python最长公共子串和最长公共子序列的实现

最长公共子串(The Longest Common Substring)LCS问题就是求两个字符串最长公共子串的问题。解法就是用一个矩阵来记录两个字符串中所有位置的两个字符之间的匹配情况,若是匹配则为1,否则为0。然后求出对角线最长的1的序列,其对应的位置就是最长匹配子串的位置。def find_lcsubstr(s1, s2):m=[[0 for i in range(len(s2)+1)] f...

weixin_39855843的博客 887

最长公共子串、最长公共子序列、最长回文子串、模式匹配、最大子序列--字符串问题整理

一.最长公共子串问题集(Longest Common Substring/LCS)     最长公共子串问题的基本表述为:     给定两个字符串,求出它们之间最长的相同子字符串的长度。     最直接的解法自然是找出两个字符串的所有子字符串进行比较看他们是否相同,然后取得相同最长的那个。对于一个长度为n的字符串,它有n(n+1)/2 个非空子串。所 以假如两个字符串的长度同为n,通

Invoker's Tower 5877

最长公共子串和最长公共子序列

1.两个字符串的最长公共子串与最长公共子序列的区别: 最长公共子串要求在原字符串中是连续的,而子序列只需要保持相对顺序一致,并不要求连续。 下面分别讲讲怎么求它们。 2.最长公共子串: (1)暴力解法: 要求最长公共子串,可以用暴力的解法: int longestSubstring(string x, string y) { int max = 0; ...

aixian8156的博客 193

最长公共连续子串-Java

题目描述 我们有两个字符串m和n,如果它们的子串a和b内容相同,则称a和b是m和n的公共子序列。子串中的字符不一定在原字符串中连续。 例如字符串“abcfbc”和“abfcab”,其中“abc”同时出现在两个字符串中,因此“abc”是它们的公共子序列。此外,“ab”、“af”等都是它们的字串。 现在给你两个任意字符串(不包含空格),请帮忙计算它们的最长公共子序列的长度。 输入描述: 输入为两行字符...

Michael_Hu 1091
上一篇: PyTorch学习笔记(一)
下一篇: 最长回文
「已注销」
博客等级 码龄10年 2粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值