代码随想录算法训练营 Day44 动态规划 ⅩⅠ 子序列问题

动态规划

题目

1143. 最长公共子序列 - 力扣(LeetCode)
公共子序列,类似于最长重复子数组,但是不要求连续 (子序列)
1. 定义 dp,dp[i][j] 表示以 i-1 与 j-1 结尾的最长公共子序列的长度
2. 定义递推公式
如果字符相同,则在基础上+1
if (text1[i-1] == text2[i-1]) dp[i][j] = dp[i-1][j-1] +1
如果字符不同,分别屏蔽 i-1 和 j-1 对比字符
else dp[i][j] = std::max(dp[i][j-1], dp[i-1][j])
3. 初始化 dp,由于 dp 是从前往后推导,且定义为 i-1, j-1
其中 0-1 时候结果为 0 意思是字符串与空字符查找那最大的公共子序列结果为 0
4. 遍历顺序是从前往后,从上到下遍历
5. 打印 dp

int longestCommonSubsequence(string text1, string text2) {// 定义dp数组std::vector<std::vector<int>> dp(text1.size()+1, std::vector<int>(text2.size()+1, 0));// 遍历dp数组for (int i = 1; i <= text1.size(); ++i) {for (int j = 1; j <= text2.size(); ++j) {// 递推公式两种情况if (text1[i-1] == text2[j-1]) dp[i][j] = dp[i-1][j-1] + 1;else dp[i][j] = std::max(dp[i-1][j], dp[i][j-1]);}}return dp[text1.size()][text2.size()];
}

1035. 不相交的线 - 力扣(LeetCode)
本题说是求绘制的最大连线数,其实就是求两个字符串的最长公共子序列的长度!
1. 定义 dp,dp[i][j] 表示以 i-1 j-1 结尾的最长公共子序列长度
2. 递推公式类上题
3. 初始化类似上题
4. 遍历顺序同上题
5. 打印 dp

int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {// 定义dp数组 i-1 j-1 结尾之前最大的公共子序列std::vector<std::vector<int>> dp(nums1.size()+1, std::vector<int>(nums2.size()+1, 0));// forfor (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;else dp[i][j] = std::max(dp[i-1][j], dp[i][j-1]);}}return dp[nums1.size()][nums2.size()];
}

53. 最大子数组和 - 力扣(LeetCode)
之前贪心做过 [[Day27 贪心Ⅰ 分饼干 摆动序列 最大子序列和#题目]],贪心就是小于 0不取
使用 dp 再做一遍,整体类似于基本的 dp 如打家劫舍、股票
1. 定义 dp,dp[i] 表示 i 之前的最大连续子数组和
2. 递推公式:基于之前的结果与当前结果的最大值作为当前 i 的 dp 值
dp[i] = max(dp[i-1]+nums[i], nums[i])
3. 初始化由于都是从前面推导的,因此 dp[0] = nums[0]
最大和要寻找 dp 最大值,使用 res 比较获取
4. 遍历顺序从前往后
5. 打印 dp

int maxSubArray(vector<int>& nums) {// 定义dp数组std::vector<int> dp(nums.size(), 0);// 初始化dp res也定义为nums[0]值保不忽略第一个元素dp[0] = nums[0];int res = nums[0];// 遍历dpfor (int i = 1; i < nums.size(); ++i) {dp[i] = std::max(dp[i-1] + nums[i], nums[i]);if (dp[i] > res) res = dp[i];}return res;
}

392. 判断子序列 - 力扣(LeetCode)
编辑距离问题,本体的本质就是求 s 与 t 的最长公共子序列,只不过这个 s 不可删除
1. dp[i][j] 表示 i-1, j-1 为结尾的 s/t 字符串的最长公共子序列的长度
2. 递推公式类似求最长公共子序列固定 s 不变,只删除 t(dp[i][j-1]
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-1,j-1 因此初始化为 0 即可,之后使用递推公式就可以推出
4. 遍历顺序从前往后遍历,结果与 s 相等说明可以匹配
5. 打印 dp

bool isSubsequence(string s, string t) {// 定义dpstd::vector<std::vector<int>> dp(s.size()+1, std::vector<int>(t.size()+1, 0));// 遍历dpfor (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]; // t 删除 匹配s}}if (dp[s.size()][t.size()] == s.size()) return true;else return false;
}

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

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

相关文章

聊一聊接口测试依赖第三方服务变更时如何处理?

目录 一、依赖隔离与模拟 二、契约测试 三、版本控制与兼容性 四、变更监控与告警 五、容错设计 六、自动化测试维护 七、协作机制与文档自动化 第三方API突然改了参数或者返回结构&#xff0c;导致我们的测试用例失败&#xff0c;这时候该怎么办呢&#xff1f;首先想到…

Python程序,输入IP,扫描该IP哪些端口对外是开放的,输出端口列表

#!/usr/bin/env python # -*- coding: utf-8 -*-""" IP端口扫描程序 输入IP地址&#xff0c;扫描该IP哪些端口对外是开放的&#xff0c;输出端口列表 """import socket import sys import concurrent.futures import ipaddress from tabulate im…

Python----神经网络(《Inverted Residuals and Linear Bottlenecks》论文概括和MobileNetV2网络)

一、论文 MobileNetV2 论文提出了一种新的移动架构&#xff0c;该架构提高了移动模型在多个任务和基准测试中的性能&#xff0c;以及在各种不同模型大小范围内的性能. 该架构基于倒残差结构&#xff0c;其中 shortcut 连接在 thin bottleneck 层之间. 中间的 expansion 层使用轻…

Maven私服搭建与登录全攻略

目录 1.背景2.简介3.安装4.启动总结参考文献 1.背景 回顾下maven的构建流程&#xff0c;如果没有私服&#xff0c;我们所需的所有jar包都需要通过maven的中央仓库或者第三方的maven仓库下载到本地&#xff0c;当一个公司或者一个团队所有人都重复的从maven仓库下载jar包&#…

EF Core 数据库迁移命令参考

在使用 Entity Framework Core 时&#xff0c;若你希望通过 Package Manager Console (PMC) 执行迁移相关命令&#xff0c;以下是常用的 EF Core 迁移命令&#xff1a; PMC 方式 ✅ 常用 EF Core PMC 命令&#xff08;适用于迁移&#xff09; 操作PMC 命令添加迁移Add-Migra…

商业 |阿里云又丢出了核弹

行业翘首以盼的DeepSeek-R2没等到&#xff0c;阿里云却先一步丢出了核弹。 4月29日凌晨&#xff0c;阿里云正式上线了Qwen3系列模型“全家桶”&#xff0c;包含2个MoE模型、6个稠密模型。 八个模型&#xff0c;小到0.6B大到235B&#xff0c;既能在手机使用&#xff0c;也有旗…

《Python星球日记》 第66天:序列建模与语言模型

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、传统语言模型1. n-gram 模型基础2. n-gram 模型的局限性二、RNN 在语言建模中的应用1. 语言模型的基本原理2. RNN 构建语言模型的优势3. 实…

20250510解决NanoPi NEO core开发板在Ubuntu core22.04.3系统下适配移远的4G模块EC200A-CN的问题

1、h3-eflasher-friendlycore-jammy-4.14-armhf-20250402.img.gz 在WIN10下使用7-ZIP解压缩/ubuntu20.04下使用tar 2、Win32DiskImager.exe 写如32GB的TF卡。【以管理员身份运行】 3、TF卡如果已经做过会有3个磁盘分区&#xff0c;可以使用SD Card Formatter/SDCardFormatterv5…

C# 的异步任务中, 如何暂停, 继续,停止任务

namespace taskTest {using System;using System.Threading;using System.Threading.Tasks;public class MyService{private Task? workTask;private readonly SemaphoreSlim semaphore new SemaphoreSlim(0, 1); // 初始为 0&#xff0c;Start() 启动时手动放行private read…

关于nextjs中next-sitemap插件生成文件样式丢失问题及自定义样式处理

现象没有默认样式 修改后 代码配置如下 next-sitemap.config.js如下 // const { routing } require(./src/i18n/routing) ;const { flatten } require(lodash) const fs require(fs); const path require(path);// 改为硬编码locales值&#xff0c;与routing.ts保持一…

图片的require问题

问题 <template><!--第一种方式--><img :src"require(/assets/${imageName})" style"width:100px;" /><!--第二种方式--><img :src"require(imageUrl)" style"width:100px;" /> </template><…

【官方题解】StarryCoding 入门教育赛 2 | acm | 蓝桥杯 | 新手入门

比赛传送门&#xff1a; 本场比赛开始时题面存在一些问题&#xff0c;私密马赛&#xff01; A.池化【入门教育赛】 根据题目所给公式计算即可。 #include "bits/stdc.h"signed main() {int t; std::cin >> t;while (t --) {int l, k, s, p; std::cin >&…

课题推荐——低成本地磁导航入门,附公式推导和MATLAB例程运行演示

地磁导航利用地球磁场的自然特性&#xff0c;通过感知磁场变化&#xff0c;帮助机器人或无人设备实现定位和导航。相比于 GPS、激光雷达等导航方法&#xff0c;地磁导航具有以下优势&#xff1a; 低成本&#xff1a;使用地磁传感器&#xff08;如电子罗盘&#xff09;&#xff…

【人工智能】自然语言编程革命:腾讯云CodeBuddy实战5步搭建客户管理系统,效率飙升90%

CodeBuddy 导读一、产品介绍1.1 **什么是腾讯云代码助手&#xff1f;**1.2 插件安装1.2.1 IDE版本要求1.2.2 注意事项1.2.4 插件安装1.2.4.1 环境安装1.2.4.2 安装腾讯云AI代码助手** 1.2.5 功能介绍1.2.5.1 Craft&#xff08;智能代码生成&#xff09;1.2.5.2 Chat&#xff08…

游戏引擎学习第270天:生成可行走的点

回顾并为今天的内容定下基调 今天的计划虽然还不完全确定&#xff0c;可能会做一些内存分析&#xff0c;也有可能暂时不做&#xff0c;因为目前并没有特别迫切的需求。最终我们会根据当下的状态随性决定&#xff0c;重点是持续推动项目的进展&#xff0c;无论是 memory 方面还…

Java反射详细介绍

的反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时动态获取类的信息、操作类的成员&#xff08;属性、方法、构造器&#xff09;&#xff0c;甚至修改类的行为。它是框架开发&#xff08;如 Spring、MyBatis&#xff09;、单元测试工具&a…

c语言第一个小游戏:贪吃蛇小游戏05

贪吃蛇脱缰自动向右走&#xff1a;脱缰的野蛇 #include <curses.h> #include <stdlib.h> struct snake{ int hang; int lie; struct snake *next; }; struct snake *head; struct snake *tail; void initNcurse() { initscr(); keypad(stdscr,1); } int …

react-diff-viewer 如何实现语法高亮

前言 react-diff-viewer 是一个很好的 diff 展示库&#xff0c;但是也有一些坑点和不完善的地方&#xff0c;本文旨在描述如何在这个库中实现自定义语法高亮。 Syntax highlighting is a bit tricky when combined with diff. Here, React Diff Viewer provides a simple rend…

coco数据集mAP评估

0 coco数据集划分说明 1 用yolo自带的评估 from ultralytics import YOLOmodel YOLO("../spatial-perception/checkpoints/yolo11n.pt")metrics model.val(data"./coco.yaml", save_jsonTrue) ## save_json为True,可以把预测结果存成json文件&#xff…

sensitive-word-admin v2.0.0 全新 ui 版本发布!vue+前后端分离

前言 sensitive-word-admin 最初的定位是让大家知道如何使用 sensitive-word&#xff0c;所以开始想做个简单的例子。 不过秉持着把一个工具做好的原则&#xff0c;也收到很多小伙伴的建议。 v2.0.0 在 ruoyi-vue&#xff08;也非常感谢若依作者多年来的无私奉献&#xff09…