动态规划 DP (四) 子序列问题

news2024/9/25 15:29:50

5.子序列问题

1)

力扣https://leetcode.cn/problems/longest-increasing-subsequence/解题思路:因为子序列,其实就意味着要进行两层遍历了,分别列举子序列的结尾坐标和开始坐标,这样才能遍历完所有子序列。然后遍历的时候,记录当前元素结尾的最长子序列长度。

当当前子序列的开始元素大于前一个元素时,以为着存在一个更长的子序列,与现有长度进行比较,选择更长的子序列。

代码:

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        int n = nums.size();
        vector<int> dp(n,1);
        int res = 0;
        for(int i=0;i<n;i++){ //子序列以i结尾 
            for(int j=0;j<i;j++){ //子序列以j开始
                if(nums[i]>nums[j]){ // 说明找到一个更长的子序列
                    dp[i] = max(dp[i], dp[j]+1); 
                }
            }
            res = max(res, dp[i]);
        }

        return res;
    }
};

2)

力扣icon-default.png?t=N5K3https://leetcode.cn/problems/longest-common-subsequence/解题思路:两重遍历所有可能的字符串匹配结果,如果末尾元素相等,则为去掉末尾元素时的最长长度加1,否则是一个字符串保留末尾元素,另一个字符串去掉末尾元素的两种情况的最长长度中的最大值。

class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        int m = text1.size();
        int n = text2.size();

        vector<vector<int>> dp(m+1,vector<int>(n+1,0));
        for(int i=1;i<=m;i++){
            for(int j=1;j<=n;j++){
                if(text1[i-1]==text2[j-1]){
                    dp[i][j] = dp[i-1][j-1] + 1;
                }else{
                    dp[i][j] = max(dp[i][j-1], dp[i-1][j]);
                }
            }
        }
        return dp[m][n];
    }
};

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

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

相关文章

Linux学习-实操篇

Linux学习 实操篇 学自尚硅谷武晟然老师&#xff0c;结合老师课堂内容和自己笔记所写博文。 文章目录 Linux学习实操篇Shell介绍文件目录一、目录操作命令1.1 查看和切换工作目录1.2 列出目录内容1.3 创建和删除目录 二、文件操作命令2.1 创建文件2.2 复制文件或文件夹2.3 删除…

Django之ORM与MySQL对比

ORM 把类映射成数据库中的表&#xff0c;把类的一个实例对象映射成数据库中的数据行&#xff0c;把类的属性映射成表中的字段&#xff0c;通过对象的操作对应到数据库表的操作&#xff0c;实现了对象到SQL、SQL到对象的转换过程。 下面以一个商品库存明细表 myfirstapp_sku&…

spring boot/spring cloud项目中创建Moudel子模块出现 Ignored pom.xml

出现问题&#xff1a; 在 IDEA 项目的父工程中创建了子模块&#xff0c;但是由于子模块创建有误&#xff0c;删了后重新创建&#xff0c;出现了 Ignored pom.xml 的问题。 分析问题&#xff1a; 分析原因&#xff1a;应该是 IDEA 觉得这个项目已经被你删除了&#xff0c;所以…

pandas (十) 缺失值的处理:填充、删除、过滤、查询

Pandas使用函数处理缺失值 isnull和notnull&#xff1a;检测是否是空值&#xff0c;可用于df和seriesdropna&#xff1a;丢弃、删除余缺失值 axis: 删除行还是列&#xff0c;{0 or ‘index’, 1 or ‘columns’), default 0 how: 如果等于any则任何值为空都删除&#xff0c;如…

630到期,全面整改完成!

2023年6月30日对于消费金融行业的同学来讲&#xff0c;是一个大日子。 因为在2022年7月12日的时候&#xff0c;银监会特意下发了一个通知&#xff0c;《提升金融服务质效的通知》&#xff0c;原文见文末。 里面要求各金融机构进行相应整改&#xff0c;而整改的截止日期就是2023…

C++ 多线程

多线程是多任务处理的一种特殊形式&#xff0c;多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下&#xff0c;两种类型的多任务处理&#xff1a;基于进程和基于线程。 基于进程的多任务处理是程序的并发执行。基于线程的多任务处理是同一程序的片段的并发执行。…

Unity GameFramework StarForce 流程介绍

一、游戏总入口 GameEntry 1.内建好的GameEntry.Builtin 提供了各种框架的组件封装 2.自定义GameEntry.Custom 根据提供的案例参考即可实现自己的组件 3.游戏入口GameEntry 二、实现自己的组件并注册到管理类中 我们自己的组件只需要继承UnityGameFramework.Runtime.Gam…

实现数据库增删改产+界面效果2-----jsp

任务 1.通过连接数据库完成用户登录模块。 2.登录成功后查询出一张数据库表中的内容&#xff1b;登录不成功返回登录页面。 3.登录页面端要有空值和非法字符验证。 4.登录成功后对一张表中数据进行增加、删除、修改和查询操作。 代码 数据库相关代码 创建数据库 名字为jdb…

76、基于STM32单片机车牌识别摄像头图像处理扫描设计(程序+原理图+PCB源文件+相关资料+参考PPT+元器件清单等)

单片机主芯片选择方案 方案一&#xff1a;AT89C51是美国ATMEL公司生产的低电压&#xff0c;高性能CMOS型8位单片机&#xff0c;器件采用ATMEL公司的高密度、非易失性存储技术生产&#xff0c;兼容标准MCS-51指令系统&#xff0c;片内置通用8位中央处理器(CPU)和Flash存储单元&a…

阿里拿38K出来的大佬良心分享,熬夜整理10 万字详细Java面试笔记

国内的互联网面试&#xff0c;恐怕是现存的、最接近科举考试的制度。 这是由于互联网IT行业的求职者太多了&#xff0c;如果考察的是清一溜的算法题和设计题&#xff0c;那么会要求面试官有极高的技术水平&#xff0c;还要花大量的时间成本和精力。 所以&#xff0c;八股文面…

#systemverilog# 关于随机约束之 unique 关键字

前言 在随机约束中,我们可以使用关键字 unique 。 使用关键字unique定义的SystemVerilog约束称为唯一约束。在随机化中,使用唯一约束可以生成变量集的唯一值或数组的唯一元素。这里着重解释一下变量集:是同一类型随机变量的集合。 通过unique约束我们可以完成以下任务: …

详解c++---哈希桶

目录标题 闭散列的回顾拉链法/哈希桶的原理准备工作find函数插入函数erase函数析构函数代码测试insert函数的改进 闭散列的回顾 在前面的学习中我们知道了闭散列的运算规则&#xff0c;当两个数据计算得到的位置发生冲突时&#xff0c;它会自动的往后寻找没有发生冲突的位置&a…

樽海鞘群算法(SSA)(含MATLAB代码)

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法&#xff0c;经典的&#xff0c;或者是近几年…

时间序列分解 | Matlab自适应噪音的完整集合经验模态分解CEEMDAN分解

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列分解 | Matlab自适应噪音的完整集合经验模态分解CEEMDAN分解 部分源码 %--------------------

torch_scatter安装踩坑实录

由于运行代码出现如下报错 ModuleNotFoundError: No module named torch_scatter因此&#xff0c;在网上找到一篇博客【不好使】 pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.12.1cu116.html(match) F:\matchCode\SuperGlue_training-main>p…

Bootstrap 表格

文章目录 Bootstrap 表格基本的表格可选的表格类条纹表格边框表格悬停表格精简表格 上下文类响应式表格 Bootstrap 表格 Bootstrap 提供了一个清晰的创建表格的布局。下表列出了 Bootstrap 支持的一些表格元素&#xff1a; 标签描述<table>为表格添加基础样式。<thea…

学习笔记-图解HTTP

1 Web及网络基础 1.1 适用Http协议访问Web 在浏览器上输入网址然后访问指定的网页&#xff0c;浏览器就相当于是客户端&#xff0c;访问的网址就是指向特定的服务器。 HTTP协议&#xff1a;HyperText Transfer Protocol&#xff0c;超文本传输协议。 Web是建立在HTTP协议上…

MySQL8.0安装详细教程

前言&#xff1a; MySQL版本区别&#xff1a; ● MySQL Community Server&#xff1a;Community是社区版本&#xff0c;开源免费&#xff0c;但不提供官方技术支持&#xff1b; ● MySQL Enterprise Edition&#xff1a;Enterprise企业版本&#xff0c;需付费&#xff0c;可以…

剑指 Offer 数组中数字出现的次数

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;数组中数字出现的次数 ⭕️ 代码&#xff1a; /*思路&#xff1a;有两个出现单次的数字&#xff0c;其余数字都出现两次。把所有的数字分成两组&#xff0c;这两个数组分到不同的组&#xff0c;异或起来&#xff0c;就可…

力扣 108. 将有序数组转换为二叉搜索树

题目来源&#xff1a;https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ C题解1&#xff1a;递归法。由于要求是平衡树&#xff0c;又给出了递增数组&#xff0c;所以构建二叉树只需将中间值作为中间节点&#xff0c;左右两边分属左右子树…