算法学习|动态规划 LeetCode 392.判断子序列 、115.不同的子序列

动态规划

  • 一、判断子序列
    • 思路
    • 实现代码
  • 二、不同的子序列
    • 思路
    • 实现代码

在这里插入图片描述
(还是蛮开心的)

一、判断子序列

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

思路

若s是t的子序列,那么s和t的最长公共子序列一定是s的长度
1.dp[i][j] :以i - 1为结尾的s,j - 1为结尾的t的相同子序列的长度
2.递推公式:
if(s[i - 1] == t[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1
else dp[i][j] =dp[i][j - 1]
3.初始化:dp[i][0] =0 dp[0][j] = 0
4.遍历顺序:从左到右,从上到下

实现代码

class Solution {
public:
    bool isSubsequence(string s, string t) {
        vector<vector<int>> dp(s.size()+1, vector<int>(t.size() + 1, 0));
        for(int i = 1; i <= s.size(); i++) {
            for(int j = 1; j <= t.size(); j++) {
                if(s[i - 1] == t[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                } else { 
                    dp[i][j] = dp[i][j - 1];
                }
            }
        }
        if(dp[s.size()][t.size()] == s.size()) return true;
        return false;
    }
};

二、不同的子序列

给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。

思路

s删除元素能变成几个t
1.dp[i][j] :以i - 1 为结尾的s中有j - 1为结尾的t的个数
2.递推公式:
if(s[i -1] == t[j - 1]) dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]
else dp[i][j] = dp[i - 1][j] (s删除该元素)
3.初始化:dp[i][0] =1(t为空字符串) dp[0][j]=0(s为空字符串)dp[0][0] = 1
4.遍历顺序:从左到右,从上到下

实现代码

class Solution {
public:
    int numDistinct(string s, string t) {
        vector<vector<uint64_t>> dp(s.size() + 1, vector<uint64_t>(t.size() + 1));
        for(int i = 0; i < s.size(); i++) dp[i][0] = 1;
        for(int j = 1; j < t.size(); j++) dp[0][j] = 0;
        for(int i = 1; i <= s.size(); i++) {
            for(int j = 1; j <= t.size(); j++) {
                if(s[i - 1] == t[j - 1]) {
                    dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
                } else {
                    dp[i][j] = dp[i - 1][j];
                }
            }
        }
        return dp[s.size()][t.size()];
    }
};

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

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

相关文章

腾讯云8核16G18M轻量服务器CPU带宽流量性能测评

腾讯云轻量应用服务器8核16G18M带宽&#xff0c;18M公网带宽下载速度峰值可达2304KB/秒&#xff0c;相当于2.25M/s&#xff0c;系统盘为270GB SSD盘&#xff0c;3500GB月流量&#xff0c;折合每天116GB流量。腾讯云百科分享腾讯云轻量服务器8核16G18M配置、CPU型号、公网带宽月…

【Pytorch】搭建网络模型的实战

【Pytorch】搭建网络模型的实战CIFAR10 model structure搭建网络使用Sequential进行搭建网络模型使用tensorboard查看网络结构对CIFAR10数据集进行分类&#xff0c;根据图片内容识别这是哪一类 CIFAR10 model structure 输入input:3通道的32 x 32 图片卷积操作的通道数不变 那…

应用信息资源管理(张士玉、董焱)——第一章 总论

第一章 总论 1.1 信息社会 1.1.1 信息社会的形成 信息社会是指以信息技术为基础&#xff0c;信息产业为支撑&#xff0c;信息化为主要特征的社会形态。其形成经历了以下几个阶段&#xff1a; 信息化初期&#xff1a;20世纪60年代至70年代&#xff0c;电子计算机的出现和发展…

人工智能会取代人工翻译吗?

当今社会正处于语言和技术高速发展的阶段&#xff0c;因此语言和技术的碰撞是不可避免的——甚至有些人说这种碰撞已经发生了&#xff0c;我们只是在等待尘埃落定。数字化、物联网、人工智能和机器学习&#xff0c;以及更进一步——智能手机、语音识别&#xff0c;以及互联网和…

机器视觉检测技术在工业零部件的应用

众所周知&#xff0c;在工业生产中&#xff0c;传统的检测技术需要大量的检测工作者&#xff0c;不仅影响生产效率&#xff0c;而且带来不可靠的因素。 视觉检测技术克服了传统检测技术的缺点&#xff0c;确保了检测的安全性。 可靠性和自动化程度高&#xff0c;已成为当前检测…

第六章 信息资源安全管理

信息资源安全管理内涵 信息在开发利用过程中面临的问题&#xff1a; 可用性&#xff1b;合法用户对信息的使用不会被不正当拒绝保密性也称机密性&#xff1b;保证机密信息不被窃取&#xff0c;或窃取者不能了解信息的真实含义认证性也称真实性&#xff1b;对信息的来源进行判断…

zabbix创建自定义监控模板

目录 第一章先行配置zabbix 第二章配置自定义 2.1.案列&#xff1a;自定义监控客户端服务器登录的人数需求&#xff1a;限制登录人数不超过 3 个&#xff0c;超过 3 个就发出报警信息 2.2.在 Web 页面创建自定义监控项模板 2.3.zabbix 自动发现与自动注册 总结 自定义监控…

Chat-GLM 详细部署(GPU显存>=12GB)

建议配置: ( Windows OS 11 部署 )CPU-i7 13700F ~ 13700KF RAM: 16GB DDR4 GPU: RTX3080(12G) 安装 conda: 1. 下载安装 miniconda3 &#xff1a; https://docs.conda.io/en/latest/miniconda.html conda是一个包和环境管理工具&#xff0c;它不仅能管理包&#xff0c;还能隔…

龙蜥 Anolis 8.x + Vmware的安装与网络配置 CentOS8 网络配置详细教程

前言 配置和安装可以看下面这两篇文章的 写的很详细https://cnxiaobai.com/articles/2021/04/21/1619011285612.htmlhttps://cnxiaobai.com/articles/2021/10/21/1634800698273.html#b3_solo_h3_1网络配置方面有不同的方面 我在下面进行了修改这个操作系统 很少资源 弄了好久才…

C++轻量级Web服务器TinyWebServer源码分析之threadpool篇

文章目录threadpool线程池篇简介一、线程池的创建与回收二、向请求队列添加请求任务三、worker函数内部访问run函数&#xff0c;完成线程处理四、run函数执行任务原文链接threadpool线程池篇简介 空间换时间,浪费服务器的硬件资源,换取运行效率. 池是一组资源的集合,这组资源…

天气预报查询 API + AI 等于王炸(一大波你未曾设想的天气预报查询 API 应用场景更新了)

前言 近年来&#xff0c;随着信息化进程的不断深入&#xff0c;人们对于信息的获取和处理需求越来越高。而其中&#xff0c;天气查询API是一个非常重要的服务&#xff0c;它能够帮助人们快速获取所在位置的天气情况&#xff0c;同时也为各类应用提供了必要的气象数据支持。 本…

vue3笔记

目录 1.vue3带来了什么 1.1源码的升级 1.2拥抱TypeScript 1.3新的特性 2.创建Vue3.0工程 2.1使用vue-cli创建 2.2使用vite创建 3.创建vue3.0工程 3.1 main.js 3.2 App.vue 4.安装开发者工具 5.常用的 Composition API 5.1拉开序幕的setup 6.ref函数 7.reactive函…

全国青少年软件编程(Scratch)等级考试二级考试真题2023年3月——持续更新.....

一、单选题(共25题,共50分) 1. 小猫的程序如图所示,积木块的颜色与球的颜色一致。点击绿旗执行程序后,下列说法正确的是?( ) A.小猫一直在左右移动,嘴里一直说着“抓到了”。 B.小猫会碰到球,然后停止。 C.小猫一直在左右移动,嘴里一直说着“别跑” D.小猫会碰到球,…

全新适配鸿蒙生态,Cocos引擎助力3D应用开发

一、适配HarmonyOS背景 HarmonyOS 3.1版本自发布以来&#xff0c;备受广大开发者的好评&#xff0c;同时也吸引了鸿蒙生态众多伙伴的青睐。 鸿蒙生态所强调的智慧全场景、多端联动与跨设备流转等能力&#xff0c;与Cocos所具有的跨平台、低功耗、高性能三大核心特点不谋而合。C…

【Python】字符串 ④ ( Python 浮点数精度控制 | 控制数字的宽度和精度 )

文章目录一、Python 字符串格式化1、浮点数精度问题2、浮点数精度控制一、Python 字符串格式化 1、浮点数精度问题 在上一篇博客 【Python】字符串 ③ ( Python 字符串格式化 | 单个占位符 | 多个占位符 | 不同类型的占位符 ) 中 , 拼接字符串中 , float 浮点类型出现如下情况 …

国内怎么玩chatGPT-chatGPT中文版入口

ChatGPT国内可用版 目前&#xff0c;国内有一些可用的ChatGPT模型和平台&#xff0c;可以方便用户使用。以下是一些代表性的中文ChatGPT模型和平台&#xff1a; THU Transformer: 清华大学自然语言处理实验室开发的中文自然语言处理模型&#xff0c;基于GPT模型架构进行研发&a…

WPS卡慢解决方法

WPS卡顿&#xff0c;很慢怎么解决&#xff1f; keywords:wps很卡很慢怎么办、wps很卡什么原因、wps很卡怎么解决、wps很占内存吗、wps很慢、wps打开文件很慢很卡怎么办、wps打开文件很慢很卡 说起来真的很搞笑&#xff0c;你可以试试把下面这个功能给勾选&#xff0c;速度X10…

ChatGPT大规模封锁亚洲地区账号

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 在毫无征兆的情况下&#xff0c;从3月31日开始OpenAI大规模封号&#xff0c;而且主要集中在亚洲地区&#xff0c;特别是ip地址在台湾、日本、香港三地的&#xff0c;命中率目测40%。新注册的账号、…

KMP算法详解

目录 KMP算法的介绍 详解KMP算法 next数组的填充 代码实现 KMP算法的介绍 KMP算法是解决字符串匹配问题的一个经典算法&#xff0c;字符串匹配问题就是查找子串T是否在主串S中存在&#xff0c;其中在KMP算法中&#xff0c;主串也被称为目标串&#xff0c;子串也被称为模式…

图片转pdf无水印版怎么转换?快收藏这三种免费转换方法!

图片转pdf无水印版怎么转换&#xff1f;在日常生活中&#xff0c;为了节省批量图片发送的时间&#xff0c;我们通常会将多张图片转换成PDF文件格式文档&#xff0c;然后发送给他人。 目前在市场上有很多软件可以将图片转PDF。你想知道哪个软件可以将图片转PDF没有水印吗&#…