上机算法刷题暑期篇(一) —— AcWing 3692. 最长连续公共子序列(西电)

题目链接

AcWing 3692. 最长连续公共子序列

题目详情

在这里插入图片描述

题目解析

我们一看到题目,最长连续子串,我们第一反应应该是什么?没错,就是dp,一般来说,子串问题常见的解法有两种:

  • 双指针

  • dp
    这道题无疑就是一道最常见的dp问题,而dp问题最重要的无疑就是状态转移了,而在这道题中,我们假设s1字符串i位置s2字符串j位置匹配成功,我们这时就可以有两种选择:

  • 将这个匹配结果纳入总结果中,即为:
    d p [ i ] [ j ] = d p [ i − 1 ] [ j − 1 ] + 1 dp[i][j]=dp[i-1][j-1]+1 dp[i][j]=dp[i1][j1]+1

  • 不采用这个结果,即为:
    d p [ i ] [ j ] = d [ i − 1 ] [ j ] dp[i][j]=d[i-1][j] dp[i][j]=d[i1][j]

所以最后的状态转换方程为:
d p [ i ] [ j ] = m a x ( d p [ i − 1 ] [ j − 1 ] + 1 , d p [ i − 1 ] [ j ] ) dp[i][j] = max(dp[i - 1][j - 1] + 1, dp[i-1][j]) dp[i][j]=max(dp[i1][j1]+1,dp[i1][j])

同时,如果dp[i][j]>res,我们就要更新res,同时由于i为外层循环,所以i的位置就是子字符串最后一位字母的位置,所以我们能得到最后的代码:

#include<iostream>
#include<cstring>using namespace std;const int N = 110;
int dp[N][N];
char a[N],b[N];int main()
{memset(dp, 0, sizeof(dp));int res = 0;int index=0; //记录最长公共子串的起始位置string resstr;scanf("%s %s",a+1,b+1);int l1=strlen(a+1),l2=strlen(b+1);for (int i = 1; i <=l1; i++)for (int j = 1; j <= l2; j++){if (a[i] == b[j]){dp[i][j] = max(dp[i - 1][j - 1] + 1, dp[i-1][j]);}if (dp[i][j]>=res){res = dp[i][j];index = i - res + 1;}}for (int i = index; i < index + res; i++){resstr += a[i];}cout << res << endl << resstr;return 0;
}

拓展;go语言的解题代码

package mainimport ("fmt""math"
)const N = 110func countEnglishLetters(data []byte) int {count := 0for _, b := range data {if (b >= 'A' && b <= 'Z') || (b >= 'a' && b <= 'z') {count++}}return count
}func main() {dp := make([][]int, N)for i := range dp {dp[i] = make([]int, N)}// 预留足够的空间a := make([]byte, N)b := make([]byte, N)var aRaw, bRaw string_, _ = fmt.Scan(&aRaw, &bRaw) // 读取输入的字符串copy(a[1:], []byte(aRaw)) // 复制到 a 的第1个位置开始copy(b[1:], []byte(bRaw)) // 复制到 b 的第1个位置开始l1:=countEnglishLetters(a)+1l2:=countEnglishLetters(b)+1res := 0index := 0 // 记录最长公共子串的起始位置var resStr stringfor i := 1; i <= l1; i++ {for j := 1; j <= l2; j++ {if a[i] == b[j] {dp[i][j] = int(math.Max(float64(dp[i-1][j-1])+1, float64(dp[i-1][j])))} if dp[i][j] >= res {res = dp[i][j]index = i - res +1}}}for i := index; i < index+res; i++ {resStr += string(a[i])}fmt.Println(res)fmt.Println(resStr)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

昇思25天学习打卡营第11天 | FCN图像语义分割

昇思25天学习打卡营第11天 | FCN图像语义分割 文章目录 昇思25天学习打卡营第11天 | FCN图像语义分割FCN模型数据处理下载数据集创建训练集可视化训练集 网络构建网络结构张量操作 训练准备导入VGG-16部分预训练权重&#xff1a;损失函数模型评估指标 模型训练模型评估模型推理…

常见 Web漏洞分析与防范研究

前言&#xff1a; 在当今数字化时代&#xff0c;Web应用程序扮演着重要的角色&#xff0c;为我们提供了各种在线服务和功能。然而&#xff0c;这些应用程序往往面临着各种潜在的安全威胁&#xff0c;这些威胁可能会导致敏感信息泄露、系统瘫痪以及其他不良后果。 SQL注入漏洞 …

《昇思25天学习打卡营第16天|基于MindNLP+MusicGen生成自己的个性化音乐》

MindNLP 原理 MindNLP 是一个自然语言处理&#xff08;NLP&#xff09;框架&#xff0c;用于处理和分析文本数据。 文本预处理&#xff1a;包括去除噪声、分词、词性标注、命名实体识别等步骤&#xff0c;使文本数据格式化并准备好进行进一步分析。 特征提取&#xff1a;将文…

5 MySql

5 MySql 一、简介二、SQL语言2.1 导入外部SQL文件2.2 显示表结构2.3 与创建数据库相关的语句2.4 与表相关的语句2.5 操作表中的数据2.6 7种基本的sql查询 三、SQL的注意点3.1 与集合函数相关3.2 SQL语句的书写与执行过程 四、约束 constraint4.1 作用4.2 功能分类4.3 自增 五、…

头歌资源库(25)地图着色

一、 问题描述 任何平面区域图都可以用四种颜色着色&#xff0c;使相邻区域颜色互异。这就是四色定理。要求给定区域图&#xff0c;排出全部可能的着色方案。例如&#xff0c;区域图如下图所示&#xff1a; 要求用四种颜色着色。 则输入&#xff1a; 10 4 &#xff08;分别表示…

python-27-零基础自学python

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版 知识点&#xff1a; 统计文本单词数、 解决问题&#xff1a; gbk codec cant decode byte 0x9d in position 995: illegal multibyte sequence” 练习内容&#xff1a; 练习10-10&#xff1a;常见单词 …

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第二十六章 安装超级终端软件

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

短视频矩阵系统是什么?怎么搭建短视频矩阵系统?一文了解矩阵模式

在数字时代&#xff0c;短视频已成为信息传播的新宠&#xff0c;而短视频矩阵系统则是品牌和个人在短视频领域取得突破的重要工具。那么&#xff0c;短视频矩阵系统究竟是什么&#xff1f;如何搭建这样一个高效的系统&#xff1f;它又能够解决哪些问题呢&#xff1f;本文将为您…

C#绘制阻抗圆图初步

阻抗圆图&#xff0c;或者叫史密斯图&#xff0c;是无线电设计方面用的&#xff1b; 基本的阻抗圆图如下&#xff0c; 下面尝试用C#能不能画一下&#xff1b; 先在网上找一个画坐标的C#类&#xff0c;它的效果如下&#xff1b; 自己再增加一个函数&#xff0c;可以绘制中心在…

地址翻译过程(TLB-->页表-->Cache-->主存-->外存)

目录 1.地址结构 2.查找快表或页表&#xff1a;从虚拟地址--->物理地址 3.通过物理地址访问数据 设某系统满足以下条件&#xff1a; •有一个TLB与一个data Cache •存储器以字节为编址单位 •虚拟地址 14位 •物理地址 12位 •页面大小为 64B •TLB 为四路组相联&#x…

消防灭火设备软体水枪的使用方法

软体水枪是一款专为消防、应急救援等领域设计的灭火工具。其内胆采用大容量设计&#xff0c;能够储存足够的灭火剂&#xff0c;满足长时间、大范围的灭火需求。软体水枪是一种高效、便捷的灭火工具。它利用压力和流体力学原理&#xff0c;通过扣动扳机将储水箱中的水以高速喷射…

《金山 WPS AI 2.0:重塑办公未来的智能引擎》

AITOP100平台获悉&#xff0c;在 2024 世界人工智能大会这一科技盛宴上&#xff0c;金山办公以其前瞻性的视野和创新的技术&#xff0c;正式发布了 WPS AI 2.0&#xff0c;犹如一颗璀璨的星辰&#xff0c;照亮了智能办公的新征程&#xff0c;同时首次公开的金山政务办公模型 1.…

PyTorch | 加速模型训练的妙招

引言 提升机器学习模型的训练速度是每位机器学习工程师的共同追求。训练速度的提升意味着实验周期的缩短&#xff0c;进而加速产品的迭代过程。同时&#xff0c;这也表示在进行单一模型训练时&#xff0c;所需的资源将会减少。简而言之&#xff0c;我们追求的是效率。 熟悉 PyT…

SpringSecurity框架【认证】

目录 一. 快速入门 二. 认证 2.1 登陆校验流程 2.2 原理初探 2.3 解决问题 2.3.1 思路分析 2.3.2 准备工作 2.3.3 实现 2.3.3.1 数据库校验用户 2.3.3.2 密码加密存储 2.3.3.3 登录接口 2.3.3.4 认证过滤器 2.3.3.5 退出登录 Spring Security是Spring家族中的一个…

机器学习(V)--无监督学习(三)EM算法

EM算法 极大似然估计 极大似然估计&#xff1a;(maximum likelihood estimate, MLE) 是一种常用的模型参数估计方法。它假设观测样本出现的概率最大&#xff0c;也即样本联合概率&#xff08;也称似然函数&#xff09;取得最大值。 为求解方便&#xff0c;对样本联合概率取对…

华为HCIP Datacom H12-821 卷36

1.单选题 在PIM- SM中&#xff0c;以下关于RP 的描述&#xff0c;错误的是哪一选项? A、在PIM-SM中&#xff0c;组播数据流量不一定必须经过RP的转发。 B、对于一个组播组来说&#xff0c;可以同时有多个RP地址&#xff0c;提升网络可靠性。 C、组播网络中&#xff0c;可以…

【BUG】已解决:JsonMappingException

已解决&#xff1a;JsonMappingException 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 概述&#xff1a; 没有getter方法的实体的序列化&#xff0c;并解决Jackson引发的JsonMappingException异常。 默认情况下&#xff0c;Jackson 2只会处理公有字段或具有公有get…

Renesas R7FA8D1BH (Cortex®-M85) 控制DS18B20

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL配置 2.1 硬件接口电路 2.2 FSB配置DS18B20的IO 2.3 生成Keil工程文件 3 DS18B20驱动代码 3.1 DS18B20介绍 3.2 DS18B20驱动实现 3.2.1 IO状态定义 3.2.2 读IO状态函数 3.2.3…

OpenCV:python图像旋转,cv2.getRotationMatrix2D 和 cv2.warpAffine 函数

前言 仅供个人学习用&#xff0c;如果对各位朋友有参考价值&#xff0c;给个赞或者收藏吧 ^_^ 一. cv2.getRotationMatrix2D(center, angle, scale) 1.1 参数说明 parameters center&#xff1a;旋转中心坐标&#xff0c;是一个元组参数(col, row) angle&#xff1a;旋转角度…

Go-知识测试-模糊测试

Go-知识测试-模糊测试 1. 定义2. 例子3. 数据结构4. tesing.F.Add5. 模糊测试的执行6. testing.InternalFuzzTarget7. testing.runFuzzing8. testing.fRunner9. FuzzXyz10. RunFuzzWorker11. CoordinateFuzzing12. 总结 建议先看&#xff1a;https://blog.csdn.net/a1879272183…