day44.动态规划

news2024/11/23 19:37:20

718.最长重复子数组

给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。

 思路:1.确定dp数组(dp table)以及下标的含义:
dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。

之后,就和最长子序列很相似了,这个最长重复子数组是用双层for循环,为啥不能从0开始遍历呢,这就和咱们的递归公式有关了,递推公式是dp[i][j]=dp[i-1][j-1]+1,所以i和j就不可以是从0开始了,之后的判断就是如果当前的nums1等于nums2,dp加1,定义变量存储最大值。

class Solution {
public:
    int findLength(vector<int>& nums1, vector<int>& nums2) {
        vector<vector<int>> dp(nums1.size()+1,vector<int>(nums2.size()+1,0));
        int res=0;
        for(int i=1;i<=nums1.size();i++){
            for(int j=1;j<=nums2.size();j++){
                if(nums1[i-1]==nums2[j-1]){
                    dp[i][j]=dp[i-1][j-1]+1;
                } 
                 res=max(res,dp[i][j]);
            }
        }
        return res;
    }
};

1143.最长公共子序列

给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。

例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。
两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。

 思路:dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j] 

主要就是两大情况: text1[i - 1] 与 text2[j - 1]相同,text1[i - 1] 与 text2[j - 1]不相同(因为可以是不连续的嘛)

如果text1[i - 1] 与 text2[j - 1]相同,那么找到了一个公共元素,所以dp[i][j] = dp[i - 1][j - 1] + 1;

如果text1[i - 1] 与 text2[j - 1]不相同,那就看看text1[0, i - 2]与text2[0, j - 1]的最长公共子序列 和 text1[0, i - 1]与text2[0, j - 2]的最长公共子序列,取最大的。

dp[i][j]是可以从三个方向推导出来的

 而像上一道题,它的递推公式就是只有dp[i-1][j-1],因为他只和左上方向有关联(连续的),而这道题他是不连续的,所以若不相等的话可以根据左方或者上方来取值(也就是下标不同但是字符相同的情况)。

class Solution {
public:
    int longestCommonSubsequence(string test1, string test2) {
    vector<vector<int>> dp(test1.size()+1,vector<int>(test2.size()+1,0));
    int res=0;
    for(int i=1;i<=test1.size();i++){
        for(int j=1;j<=test2.size();j++){
            if(test1[i-1]==test2[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[test1.size()][test2.size()];
    }
};

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

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

相关文章

【论文速读】|RO-SVD:一种用于 AIGC 应用的可重构硬件版权保护框架

本次分享论文&#xff1a;RO-SVD: A Reconfigurable Hardware Copyright Protection Framework for AIGC Applications 基本信息 原文作者&#xff1a;Zhuoheng Ran, Muhammad A.A. Abdelgawad, Zekai Zhang, Ray C.C. Cheung, Hong Yan 作者单位&#xff1a;香港城市大学电…

linux 内核代码学习(七)

linux内核代码的研究中断了一段时间了&#xff0c;现在又重新开始了研究&#xff0c;个人觉得linux内核的学习是没有上限的&#xff0c;总是一个温故而知新的过程&#xff0c;是一个不断积累的过程。首先还是要先搭建一个方便自己学习和研究的平台&#xff0c;经过不断的尝试&a…

Java的IO模型详解-BIO,NIO,AIO

一、BIO相关知识 Java 的 BIO (Blocking I/O) 模型是基于传统的同步阻塞 I/O 操作。在这种模型中&#xff0c;每个客户端连接都需要一个独立的线程来处理请求。当线程正在执行 I/O 操作时&#xff08;如读取或写入&#xff09;&#xff0c;它会被阻塞&#xff0c;直到操作完成…

三级_网络技术_55_应用题

一、 请根据下图所示网络结构回答下列问题。 1.填写RG的路由表项。 目的网络/掩码长度输出端口__________S0&#xff08;直接连接&#xff09;__________S1&#xff08;直接连接&#xff09;__________S0__________S1__________S0__________S1 (2)在不改变路由表项的前提下&…

django学习入门系列之第十点《案例 用户登录》

文章目录 案例 用户登录安全认证django中的隐藏值获得用户账户密码空值 往期回顾 案例 用户登录 安全认证 ​ 如果提交数据后&#xff0c;发现并没有跳转到自己想要的界面&#xff0c;是因为django比Flask多一层 ”安全机制“ 的东西 解决方法&#xff1a; {% csrf_token %…

使用maven搭建微服务框架

徒手搭建cloud 1.认准SpringBoot,SpringCloud,SpringCloudAlibaba版本之间的对用关系 官网给出了声明&#xff1a;https://github.com/alibaba/spring-cloud-alibaba/wiki 2.选择好版本之后 spring bootspring cloudspring cloud alibaba2.3.12.RELEASEHoxton.SR102.2.5.REL…

Ps:工具预设面板

Ps菜单&#xff1a;窗口/工具预设 Window/Tool Presets 工具预设 Tool Presets面板可以为 Photoshop 的图像编辑工作带来极大的便利。 定义好相关的工具预设后&#xff0c;可以直接调用&#xff0c;而不管现在处于什么工具或什么样的参数状态&#xff0c;省去了再次设置参数的麻…

使用 树莓派3B+ 对日本葡萄园进行经济实惠的环境监测

对于 菊岛邦夫—Vineyard Kikushima 而言&#xff0c;Raspberry Pi 生态系统提供了支持和信息&#xff0c;通过基于温度和湿度监测的有针对性的最低限度杀虫剂方案&#xff0c;来提高葡萄的健康产量。 Vineyard Kikushima&#xff1a;http://vykikushima.greater.jp/vineyards…

finalshell 用 root 账号连接 ubuntu

我们平时在操作 linux 系统时&#xff0c;经常需要上传文件&#xff0c;修改文件&#xff0c;普通账号只能通过 vim 等工具修改&#xff0c;诸多不便。为了实现跟 windows 一样&#xff0c;双击直接编辑保存&#xff0c;需要下面步骤。 1. ubuntu 安装 ssh 1.1 安装 SHH 服务…

LuaJit分析(十)luajit自定义修改

通过分析luajit字节码文件格式可知&#xff0c;luajit文件由文件头和原型数组组成&#xff0c;而原型又包括原型头和原型体&#xff0c;文件头中包含了字节码文件的一些关键信息&#xff0c;目前的反编译工具根据标准的luajit2.0文件格式解析文件&#xff0c;如果对字节码文件的…

[Algorithm][综合训练][哈夫曼编码][abb][旋转字符串]详细讲解

目录 1.哈夫曼编码1.题目链接2.算法原理详解 && 代码实现 2.abb1.题目链接2.算法原理详解 && 代码实现 3.旋转字符串1.题目链接2.算法原理详解 && 代码实现 1.哈夫曼编码 1.题目链接 哈夫曼编码 2.算法原理详解 && 代码实现 哈夫曼编码&…

Linux系统应用(3)——编辑器vim

个人内容简介&#xff1a; &#x1f343;个人主页&#xff1a;诉清风2023 &#x1f388;逆转时间的公式&#xff0c;就是珍惜现在ദ്ദി˶&#xff70;̀֊&#xff70;́ ) ✧ 目录 个人内容简介&#xff1a; &#x1f388;逆转时间的公式&#xff0c;就是珍惜现在ദ്ദ…

junit格式报告解析工具

前言 在测试过程中&#xff0c;使用unittest或者pytest等主流框架&#xff0c;都可以生成junit格式的测试报告。当然也可以生成html格式的报告。但是为了自定义自己的测试报告&#xff0c;我开发了一款web网页工具&#xff0c;使用该工具上传junit格式的xml报告&#xff0c;可…

[Algorithm][综合训练][奇数位丢弃][求和][计算字符串的编辑距离]详细讲解

目录 1.奇数位丢弃1.题目链接2.算法原理详解 && 代码实现 2.求和1.题目链接2.算法原理详解 && 代码实现 3.计算字符串的编辑距离1.题目链接2.算法原理详解 && 代码实现 1.奇数位丢弃 1.题目链接 奇数位丢弃 2.算法原理详解 && 代码实现 解法…

丙类谐振功放的工作状态分析

前言&#xff1a;我们之前已经根据导通角θ&#xff0c;将工作状态分成了甲乙丙三类。我们发现丙类的效率最高&#xff0c;所以现在我们专门分析一下丙类工作状态。 1定量分析与定性分析 定量分析&#xff1a;是指分析以数量形式存在着的属性。 定性分析&#xff1a;是指分析…

2024.8.29 C++

作业 仿照string类&#xff0c;实现myString 代码 #include <iostream> #include <cstring> using namespace std; //仿照string完成myString类 class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度p…

flex实现骰(tou)子点数

文章目录 效果演示分析思路代码实现 效果演示 分析思路 5点需要使用margin进行移动点数。而6点的话&#xff0c;使用align-content: space-between;和 justify-content: space-between;就能实现&#xff0c;不过需要注意的是主轴为侧轴&#xff0c;dot的第二个要给padding才能实…

【功能自动化】自动识别测试用例

1.创建unitWebtours.py 将unitWebtours.py放在test文件夹下 unitWebtours.py 代码实现 from selenium import webdriver from selenium.webdriver.support.select import Select from time import sleep import unittestdriver Noneclass Webtours(unittest.TestCase):clas…

java写入word表格(poi-tl)

1.导入依赖 <!--poi-tl--> <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.0</version> </dependency>2.代码 自己创建模板。放在&#xff08;resource/file&#xff09;…

如何更改 Mac 上 Java 的默认版本?

优质博文&#xff1a;IT-BLOG-CN 第一次运行/usr/libexec/java_home -V将输出类似以下内容&#xff1a; Matching Java Virtual Machines (3): 1.8.0_05, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home 1.6.0_65-b14-4…