【动态规划入门】判断子序列

每日一道算法题之判断子序列

  • 一、题目描述
  • 二、思路
  • 三、C++代码

一、题目描述

题目来源:LeetCode

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

示例如下:

输入:
abc
ahdgbc
输出:true

二、思路

  这个题目和之前的最长公共之序列的题目非常类似,在此不再赘述,唯一要注意的一点就是本题如果要删除字符,一定是删除s2字符串的字符,而最长公共子序列那题则是两个都可以进行删除。

  • 区别:
最长公共子序列:
if(s1[i-1]==s2[j-1]){dp[i][j]=dp[i-1][j-1]+1;}else{dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}判断子序列:
if(s1[i-1]==s2[j-1]){dp[i][j]=dp[i-1][j-1]+1;}else{dp[i][j]=dp[i][j-1];}

三、C++代码

#include<bits/stdc++.h>
using namespace std;//判断子序列 
#define maxn 10010
int dp[maxn][maxn];   //以下标i-1为结尾的字符串s1,和以下标j-1为结尾的字符串s2,相同子序列的长度为dp[i][j]。int main(){string s1,s2;cin>>s1>>s2;int N=s1.size();int M=s2.size();//dp数组初始化for(int i=0;i<N;i++){dp[i][0]=0;} for(int j=0;j<M;j++){dp[0][j]=0;}//确定递推关系for(int i=1;i<=N;i++){for(int j=1;j<=M;j++){if(s1[i-1]==s2[j-1]){dp[i][j]=dp[i-1][j-1]+1;}else{dp[i][j]=dp[i][j-1];}}} if(dp[N][M]==N){cout<<"true";}else{cout<<"false";}} 

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

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

相关文章

HashMap 底层,同时遍历+删除会出现什么问题?怎么解决

HashMap底层使用的是数组链表/红黑树的方式实现的 在并发场景下同时进行遍历删除&#xff0c;会出现ConcurrentModificationException异常&#xff0c;这是因为HashMap的迭代器是快速失败的&#xff08;fail-fast&#xff09;,当检测到结构性的改变&#xff08;比如增加或删除…

java IO实现一次性读取一个文件全部内容后在写入一个文件

java IO实现一次性读取一个文件全部内容后在写入一个文件 import java.io.*;/*** author admin*/ public class FileIo {public static void main(String[] args) {String content getFileString();File outputFile new File("C:\\Users\\admin\\Desktop\\test\\1.txt&…

Kubernetes 几大概念的作用

更详细的组件通信流程 Kubernetes 主要由以下几个核心组件组成&#xff1a; 1. etcd 保存了整个集群的状态&#xff1b; 2. API Server 提供了资源操作的唯一入口&#xff0c;并提供认证&#xff0c;授权&#xff0c;访问控制&#xff0c;API 注册和发现等机制&#xff1b; …

python安装graph-tool 和 torch_geometric,pytorch总结:

目录 1.graph-tool 2.torch_geometric 3.pytorch 1.graph-tool &#xff08;1&#xff09;各种方式试过了&#xff0c;本地安装的没法正常用&#xff1a;conda本地化安装&#xff08;conda install --use-local&#xff09;&#xff0c;以 graph-tool 安装为例 - 知乎 &…

Leetcode每日一题】 二维前缀和 - 矩阵区域和(难度⭐⭐)(31)

1. 题目解析 题目链接&#xff1a;1314. 矩阵区域和 题目乍一看很晦涩难懂&#xff0c;又是大于等于又是k的 仔细分析&#xff0c;题目所说的意思就是以[i,j]为中心&#xff0c;求上下左右向外拓展k个单位的矩阵和&#xff0c;放在名为answer的矩阵中&#xff0c;最后返回ans…

Java里的泛型<T> T 的运用

因为我总是写一些CRUD的代码&#xff0c;泛型的知识都忘得差不多了&#xff0c;今天特地来写一下。 泛型可以认为是 把类型参数化&#xff0c;方便代码重用。 Double[] num new Double [] {1.11, 2.22}; String[] str new String [] {"hello", "world"…

Session登陆实践

Session登陆实践 Session登录是一种常见的Web应用程序身份验证和状态管理机制。当用户成功登录到应用程序时&#xff0c;服务器会为其创建一个会话&#xff08;session&#xff09;&#xff0c;并在会话中存储有关用户的信息。这样&#xff0c;用户在与应用程序交互的整个会话…

设计模式 代理模式

代理模式主要使用了 Java 的多态&#xff0c;主要是接口 干活的是被代理类&#xff0c;代理类主要是接活&#xff0c; 你让我干活&#xff0c;好&#xff0c;我交给幕后的类去干&#xff0c;你满意就成&#xff0c;那怎么知道被代理类能不能干呢&#xff1f; 同根就成&#xff…

leetcode 估算题

2117. 一个区间内所有数乘积的缩写 class Solution {public String abbreviateProduct(int left, int right) {long c 0, suf 1, maxSuf (long) 1e11, len 0;double pre 1.0;for (int num left; num < right; num) {pre * num;suf * num;while (pre > 100000) { /…

档案室管理人员有哪些岗位

档案室管理人员的岗位可以分为以下几类&#xff1a; 1. 档案文书管理岗位&#xff1a;负责档案文书的管理、整理、归档和借阅工作&#xff0c;包括档案资料的分类、编目、装订、存储等。 2. 档案数字化管理岗位&#xff1a;负责将纸质档案数字化&#xff0c;进行扫描、转换、存…

你喜欢那种舞者呢?

迷宫中的舞者&#xff1a;程序员职业赛道的探索与魅力 在数字世界的深处&#xff0c;程序员的职业赛道宛如一座神秘而迷人的迷宫。这个迷宫中&#xff0c;每个转角都隐藏着无限的可能&#xff0c;每个领域都散发着独特的魅力。前端开发者如同花园中的精灵&#xff0c;后端工程师…

mac下终端命令提示补全

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 mac下终端命令提示补全 前言Zsh-autosuggestions原理解析&#xff1a;智能提示的工作方式1. 命令历史分析&#xff1a;2. 智能提示生成&#xff1a;3. 用户交互和选择&#xff1a;4. 配置和个性化&…

Linux基础IO【 详 解 】

文章目录 C语言文件IOC语言文件接口汇总默认打开的三个流 系统文件IOopenclosewriteread 文件描述符fd文件描述符的分配规则重定向重定向的本质dup2 FILEFILE当中的文件描述符FILE当中的缓冲区 理解文件系统初识inode磁盘分区与格式化介绍 软硬链接软链接硬链接软硬链接的区别 …

CorelDRAW Graphics Suite2024专业图形设计软件Windows/Mac最新25.0.0.230版

CorelDRAW Graphics Suite 2024是一款专业的图形设计软件&#xff0c;它集成了CorelDRAW Standard 2024和其他高级图形处理工具&#xff0c;为用户提供了全面的图形设计和编辑解决方案。 该软件拥有强大的矢量编辑功能&#xff0c;用户可以轻松创建和编辑矢量图形&#xff0c;…

UI 易用性测试 以及自动化实现!

GUI 是指图形用户界面&#xff0c;UI 是指用户界面&#xff0c;对于纯软件系统&#xff0c;这两者没有本质的区别&#xff0c;GUI易用性测试与 UI 易用性测试内容一致。但是如果测试的对象是一个产品&#xff0c;这两者则存在区别&#xff0c;对于产品 UI 则不仅仅包括 GUI&…

多线程-线程池原子性并发工具类

1.线程池 1.线程状态 虚拟机中线程的六种状态 新建状态&#xff08;NEW&#xff09; --创建线程 就绪状态&#xff08;RUNNABLE&#xff09; --start方法 阻塞状态&#xff08;BLOCKED&#xff09; --无法获得锁对象 等待状态&#xff08;WAITING&#xff09; …

springboot254小区团购管理

小区团购管理设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装小区团购管理软件来发挥其高效地信…

菜鸟笔记-14Python绘图颜色使用

Python中绘图主要依赖于各种库&#xff0c;其中matplotlib是最常用且功能强大的一个。在matplotlib中&#xff0c;你可以使用各种颜色来表示不同的数据点、线条或填充区域。下面我将详细介绍如何在Python中使用matplotlib来设置绘图颜色&#xff0c;并给出具体的例子。 14.1颜…

Spring循环依赖问题分析

对象分类&#xff1a;1.成品对象&#xff1a;实例化完成 初始化完成 2.半成品对象&#xff1a; 实例化完成 初始化未完成 实例化和初始化可以分开执行是解决循环依赖问题的关键 一级缓存&#xff1a;保存完成的bean对象 二级缓存&#xff1a;存储成品对象 三级缓存&#xff1a…

《北上广深杭》都有哪些最值得加入的互联网大厂

IT行业做技术很公平&#xff0c;没那么看重出身&#xff0c;只要你技术好&#xff0c;能力强&#xff0c;就能进大厂&#xff0c;拿高薪。IT行业算是目前为数不多的比较容易屌丝逆袭的行业之一&#xff0c;IT行业也从来不缺少造富神话。一起加油吧&#xff0c;打工人&#xff0…