DP(动态规划)【3】 最长公共子序列 最长回文子串

目录

1.最长公共子序列

状态转移方程需要二维数组,1-dim已经不太够了

又是这个问题:如何读入字符串

2.最长回文子串


1.最长公共子序列

状态转移方程需要二维数组,1-dim已经不太够了

这里dp[i][j]是说S的前i位与T的前j位公共序列,所以前i位是下标至i-1位置(≤,闭)

所以,最后是到dp[lenA][lenB].

同时,判断时,要s[i-1]==t[j-1]。注意向左偏移一位

又是这个问题:如何读入字符串

答案用的是cin>>#string

再次参照之前的

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <queue>
using namespace std;
const int N=102,maxn=10;int n,m,k,dp[N][N]={0};
char str1[N],str2[N];
int main()
{
	scanf("%s",str1);
	scanf("%s",str2);
	int l1=strlen(str1);
	int l2=strlen(str2);
	int ans=0;

for(int i=0;i<=l1;i++) dp[i][0]=0;
for(int i=0;i<=l2;i++) dp[0][i]=0;

for(int i=1;i<=l1;i++)
{for(int j=1;j<=l2;j++)
{
if(str1[i-1]!=str2[j-1]) //注意这里要偏移一位 
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
else dp[i][j]=dp[i-1][j-1]+1;
}
}
printf("%d",dp[l1][l2]);
	
	
}
 

所以可以scanf("%s",#cstring) 

读取字符串长度?

试一波

2.最长回文子串

状态:仍然是二维数组,dp[i][j]是从i位到j位是否是回文串

如何遍历?

不像上题,直接fori=0……forj=0

应该是第一憧循环表示子串长度,依次遍历长度为3,4,……的所有子串(实现写好长度为1&2的边界条件),然后更新ans

转移方程

if str【j】=str【j+i-1】

&& dp【i+1】【i+j-2】

则dp【i】【j】=1;

代码

#include <iostream>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <queue>
using namespace std;
const int N=102,maxn=10;int n,m,k,dp[N][N]={0};
char str[N],str2[N];
int main()
{
	scanf("%s",str);
	int l1=strlen(str);
	int ans=1;

for(int i=0;i<l1;i++) dp[i][i]=1;
//for(int i=0;i<l1;i++)
//{for(int j=0;j<l1;j++)
//{printf("-%d-",dp[i][j]);
//
//
//}
//printf("\n");
//}
//

for(int i=0;i<l1-1;i++)
{dp[i][i+1]=int(str[i]==str[i+1]);
 dp[i+1][i]=int(str[i+1]==str[i]);
 if(str[i]==str[i+1]) ans=2;
 //printf("*%d*",dp[i][i+1]);
}



for(int i=3;i<=l1;i++)//枚举长度 
{for(int j=0;j+i-1<=l1-1;j++)//枚举长度为i的子串 
{
if(str[j]==str[j+i-1])
{if(dp[j+1][j+i-1-1]) 
{dp[j][j+i-1]=1;
ans=i;//printf("?"); 

}
}
//lozjujzve

}
}
//
//for(int i=0;i<l1;i++) dp[i][i]=1;
//for(int i=0;i<l1;i++)
//{for(int j=0;j<l1;j++)
//{printf("-%d-",dp[i][j]);
//
//
//}
//printf("\n");
//}

printf("%d",ans);
	
	
}
 

强调一下,不能对s和s[::-1]求最长公共子序列,我一直以为是可以的

理由如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

韩顺平0基础学java——第34天

p675-689 UDP网络编程 1.类 DatagramSocket和 DatagramPacket[数据包/数据报]实现了基于UDP协议网络程序。 2.UDP数据报通过数据报套接字DatagramSocket发送和接收&#xff0c;系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。 3.DatagramPacket对象…

FastAPI教程III

本文参考FastAPI教程https://fastapi.tiangolo.com/zh/tutorial 这部分暂无需求的没有记录&#xff0c;仅放置标题。 依赖项 安全性 中间件 你可以向FastAPI应用添加中间件。 ”中间件“是一个函数&#xff0c;它在每个请求被特定的路径操作处理之前&#xff0c;以及在每个…

植物大战僵尸融合版最新版2024蓝飘飘fly

亲爱的花园守护者们&#xff0c;是否已经厌倦了传统塔防游戏的老套模式&#xff1f;是否渴望在熟悉的《植物大战僵尸》中寻找全新的刺激体验&#xff1f;那么&#xff0c;让我们一起走进《植物大战僵尸融合版》的异想世界&#xff0c;开启一场别开生面的园艺之战吧&#xff01;…

区间动态规划——最长回文子序列长度(C++)

把夜熬成粥&#xff0c;然后喝了它。 ——2024年7月1日 书接上回&#xff1a;区间动态规划——最长回文子串&#xff08;C&#xff09;-CSDN博客&#xff0c;大家有想到解决办法吗&#xff1f; 题目描述 给定一个字符串s&#xff08;s仅由数字和英文大小写字母组成&#xff0…

以太网交换机原理

没有配置&#xff0c;比较枯燥&#xff0c;二可以认识线缆&#xff0c; 三比较重要&#xff0c;慢慢理解&#xff0c;事半功倍。 各位老少爷们&#xff0c;在下给大家说段以太网交换机原理&#xff0c;说得不好大家多多包涵&#xff0c;说得好呢&#xff0c;大家叫个好&#x…

Debugging using Visual Studio Code

One of the key features of Visual Studio Code is its great debugging support. VS Code’s built-in debugger helps accelerate your edit, compile, and debug loop. Debugger extensions VS Code 内置了对 Node.js 运行时的调试支持,可以调试 JavaScript、TypeScript…

Web3 前端攻击:原因、影响及经验教训

DeFi的崛起引领了一个创新和金融自由的新时代。然而&#xff0c;这种快速增长也吸引了恶意行为者的注意&#xff0c;他们试图利用漏洞进行攻击。尽管很多焦点都集中在智能合约安全上&#xff0c;但前端攻击也正在成为一个重要的威胁向量。 前端攻击的剖析 理解攻击者利用前端漏…

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection

LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection 论文链接&#xff1a;http://arxiv.org/abs/2406.03459 代码链接&#xff1a;https://github.com/Atten4Vis/LW-DETR 一、摘要 介绍了一种轻量级检测变换器LWDETR&#xff0c;它在实时物体检测方面超越…

matrixone集群搭建、启停、高可用扩缩容和连接数据库

1. 部署 Kubernetes 集群 由于 MatrixOne 的分布式部署依赖于 Kubernetes 集群&#xff0c;因此我们需要一个 Kubernetes 集群。本篇文章将指导你通过使用 Kuboard-Spray 的方式搭建一个 Kubernetes 集群。 准备集群环境 对于集群环境&#xff0c;需要做如下准备&#xff1a…

数据结构-期末复习题

数据结构-期末复习题 一、选择题 1、在数据结构中&#xff0c;与所使用的计算机无关的是数据的&#xff08; ) 结构。 A. 存储B. 物理C. 逻辑D. 物理和存储 【答案】C 【解析】暂无解析2、算法分析的两个主要方面是 ( )。 A. 正确性和简单性B. 可读性和文档性C. 空间复杂度…

测评推荐:企业管理u盘的软件有哪些?

U盘作为一种便携的存储设备&#xff0c;方便易用&#xff0c;被广泛应用于企业办公、个人学习及日常工作中。然而&#xff0c;U盘的使用也带来了数据泄露、病毒传播等安全隐患。为了解决这些问题&#xff0c;企业管理U盘的软件应运而生。 本文将对市面上流行的几款U盘管理软件…

【SQLmap】常用命令

文章目录 实际使用案例常用命令基本命令数据库指纹识别用户信息用户权限数据库枚举数据导出密码哈希操作系统命令执行文件操作代理和网络参数指定保存恢复自动搜索注入智能模式等级设置自动注入WAF 绕过杂项帮助和支持 SQLmap 是一款开源的自动化 SQL 注入检测和利用工具&#…

Web Based Quiz System v1.0 SQL 注入漏洞(CVE-2022-32991)

前言 CVE-2022-32991 是一个影响 Web Based Quiz System v1.0 的 SQL 注入漏洞。这个漏洞存在于 welcome.php 文件中的 eid 参数处。攻击者可以通过此漏洞在数据库中执行任意 SQL 语句&#xff0c;从而获取、修改或删除数据库中的数据。 具体细节如下&#xff1a; 攻击向量&…

【Spring Boot】Java 持久层 API:JPA

Java 持久层 API&#xff1a;JPA 1.Spring Data1.1 主要模块1.2 社区模块 2.JPA3.使用 JPA3.1 添加 JPA 和 MySQL 数据库的依赖3.2 配置数据库连接信息 4.了解 JPA 注解和属性4.1 常用注解4.2 映射关系的注解4.3 映射关系的属性 5.用 JPA 构建实体数据表 1.Spring Data Spring…

VMware虚拟机迁移:兼用性踩坑和复盘

文章目录 方法失败情况分析&#xff1a;参考文档 方法 虚拟机关机&#xff0c;整个文件夹压缩后拷贝到新机器中&#xff0c;开机启用即可 成功的情况&#xff1a; Mac (intel i5) -> Mac (intel i7)Mac (intel, MacOS - VMware Fusion) -> DELL (intel, Windows - VMw…

flask的基本使用2

上一篇我们介绍了基本使用方法 flask使用 【 1 】基本使用 from flask import Flask# 1 实例化得到对象 app Flask(__name__)# 2 注册路由--》写视图函数 app.route(/) def index():# 3 返回给前端字符串return hello worldif __name__ __main__:# 运行app&#xff0c;默认…

Linux【环境 CenOS7】部分软件安装链接整理

优质博文&#xff1a;IT-BLOG-CN 一、开启网络 【问题】&#xff1a; 刚安装完CentOS&#xff0c;当ping www.baidu.com时&#xff0c;ping不通&#xff1b; 【解决】&#xff1a; 进入cd /etc/sysconfig/network-scripts/我这里修改的是ifcfg-ens33文件&#xff0c;将ONBOOT…

论文阅读_基于嵌入的Facebook搜索

英文名称&#xff1a;Embedding-based Retrieval in Facebook Search 中文名称&#xff1a;基于嵌入式检索的Facebook搜索 时间&#xff1a;Wed, 29 Jul 2020 (v2) 地址&#xff1a;https://arxiv.org/abs/2006.11632 作者&#xff1a;Jui-Ting Huang, Ashish Sharma, Shuying …

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验12 默认路由和特定主机路由

一、实验目的 1.验证默认路由和特定主机路由的作用&#xff1b; 二、实验要求 1.使用Cisco Packet Tracer仿真平台&#xff1b; 2.观看B站湖科大教书匠仿真实验视频&#xff0c;完成对应实验。 三、实验内容 1.构建网络拓扑&#xff1b; 2.验证验证默认路由和特定主机路由…

MySQL高级-索引-使用规则-SQL提示(use、ignore、force)

文章目录 1、查看表 tb_user2、展示索引3、为profession、age、status创建 联合索引4、查询 profession软件工程5、执行计划 profession软件工程6、创建profession单列索引7、再次执行计划 profession软件工程8、SQL提示8.1、use index(idx_user_pro)8.2、ignore index(idx_use…