[C国演义] 第二十一章

第二十一章

  • 最长公共子序列
  • 不相交的线

最长公共子序列

力扣链接

  • 单个数组的子序列问题 – dp[i] -- 以nums[i] 为结尾的所有子序列中, xxx xxx. 然后状态转移方程根据 最后一个位置的归属问题进行讨论

  • 两个数组的子序列问题 – 以小见大, 分别分析nums1中的一个区间 和 nums2的一个区间进行讨 --> dp[i][j] -- nums1中的[0, i] 区间 以及 nums2中的 [0, j]区间内的所有子序列的组合中, 公共子序列的最大长度

  • 状态转移方程 – 最后一个位置的具体情况

  • 遍历顺序

  • 初始化
    需要使用左上角的情况dp表可以多开一行, 多开一列
    但是dp表中使用原 nums1 和 nums2的情况就会出现偏差, 解决方法

    1. 访问nums1 和 nums2里面的情况, 就要 -1
    2. 可以在nums1, nums2前面添加一个 空格使得dp表中的下标 和 nums1 和 nums2中的下标一致化

    ⇒ 这样初始化就方便很多 , 都初始化为 0

  • 返回值 — dp[i][j] -- nums1中的[0, i] 区间 以及 nums2中的 [0, j]区间内的所有子序列的组合中, 公共子序列的最大长度返回 dp[m][n]

  1. 访问 -1
class Solution {
public:int longestCommonSubsequence(string nums1, string nums2) {int m = nums1.size();int n  = nums2.size();vector<vector<int>> dp(m+1, vector<int>(n+1));for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){// 访问, -1if(nums1[i-1] == nums2[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];}
};

  1. 添加空格
class Solution {
public:int longestCommonSubsequence(string nums1, string nums2) {int m = nums1.size();int n  = nums2.size();vector<vector<int>> dp(m+1, vector<int>(n+1));// 访问, 添加空格nums1 = ' ' + nums1;nums2 = ' ' + nums2;for(int i = 1; i <= m; i++){for(int j = 1; j <= n; j++){if(nums1[i] == nums2[j]){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];}
};


不相交的线

力扣链接

这题的是 最长公共子序列 的变种题目, 求区间内的公共子序列的最长长度

  • 两个数组的子序列问题 – 以小见大, 分别分析nums1中的一个区间 和 nums2的一个区间进行讨 --> dp[i][j] -- nums1中的[0, i] 区间 以及 nums2中的 [0, j]区间内的所有子序列的组合中, 公共子序列的最大长度

  • 状态转移方程 – 最后一个位置的具体情况

  • 遍历顺序

  • 初始化
    需要使用左上角的情况dp表可以多开一行, 多开一列
    但是dp表中使用原 nums1 和 nums2的情况就会出现偏差, 解决方法

    1. 访问nums1 和 nums2里面的情况, 就要 -1
    2. 可以在nums1, nums2前面添加一个 空格使得dp表中的下标 和 nums1 和 nums2中的下标一致化

    ⇒ 这样初始化就方便很多 , 都初始化为 0

  • 返回值 — dp[i][j] -- nums1中的[0, i] 区间 以及 nums2中的 [0, j]区间内的所有子序列的组合中, 公共子序列的最大长度返回 dp[m][n]

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


日出而作,日入而息。
凿井而饮,耕田而食。
帝力于我何有哉?
— — 《击壤歌》

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

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

相关文章

Python3语法总结-数据转换②

Python3语法总结-数据转换② Python3语法总结二.Python数据类型转换隐式类型转换显示类型转换 Python3语法总结 二.Python数据类型转换 有时候我们&#xff0c;需要对数据内置的类型进行转换&#xff0c;数据类型的转换。 Python 数据类型转换可以分为两种&#xff1a; 隐式类…

微信个人号api

简要描述&#xff1a; 登录E云平台 请求URL&#xff1a; http://域名地址/member/login域名地址开发者账号密码:后台系统自助开通 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/json 参数&#xff1a; 参数名必选类型说…

TensorFlow:GPU的使用

**引言** TensorFlow 是一个由 Google 开发的开源机器学习框架&#xff0c;它提供了丰富的工具和库&#xff0c;支持开发者构建和训练各种深度学习模型。而 GPU 作为一种高性能并行计算设备&#xff0c;能够显著提升训练深度学习模型的速度&#xff0c;从而加快模型迭代和优化…

【火炬之光-魔灵装备】

文章目录 装备天赋追忆石板技能魂烛刷图策略 装备 头部胸甲手套鞋子武器盾牌项链戒指腰带神格备注盾牌其余的装备要么是召唤物生命&#xff0c;要么是技能等级&#xff0c;鞋子的闪电技能等级加2不是核心&#xff0c;腰带的话主要是要冷却有冷却暗影的技能是不会断的&#xff…

YOLOv8改进 | DAttention (DAT)注意力机制实现极限涨点

论文地址&#xff1a; DAT论文地址 官方地址&#xff1a;官方代码的地址 代码地址&#xff1a;文末有修改了官方代码BUG的代码块复制粘贴即可 一、本文介绍 本文给大家带来的是YOLOv8改进DAT(Vision Transformer with Deformable Attention)的教程&#xff0c;其发布于2022…

“腾易视连”构建汽车生态新格局 星选计划赋能创作者价值提升

11月16日&#xff0c;在2023年广州国际车展前夕&#xff0c;以“腾易视连&#xff0c;入局视频号抓住增长新机会”为主题的腾易创作者大会在广州隆重举办。此次大会&#xff0c;邀请行业嘉宾、媒体伙伴、生态伙伴、视频号汽车领域原生达人等共济一堂&#xff0c;结合汽车行业数…

多聚焦图像融合算法

# @File : PerfectFusion.py # @Author : ShawnWang # @Desc : 多焦点图像融合 # Time : 2023/9/24 08:25 import cv2 import matplotlib.pyplot as plt import numpy as np import pywt from PIL import Image# 基于小波变换的多聚焦图像融…

MyBatis使用注解操作及XML操作

文章目录 1. 注解操作1.1 打印日志1.2 参数传递1.3 增&#xff08;Insert&#xff09;注意1&#xff1a;重命名注意2&#xff1a;返回主键 1.4 删&#xff08;Delete&#xff09;1.5 改&#xff08;Update&#xff09;1.6 查&#xff08;Select&#xff09;1. 配置&#xff0c;…

“升级图片管理,优化工作流程——轻松将JPG转为PNG“

在图片时代&#xff0c;无论是工作还是生活&#xff0c;图片管理都显得尤为重要。批量处理图片&#xff0c;将JPG格式轻松转换为PNG格式&#xff0c;能够使您的图片管理更优化&#xff0c;提高工作效率。 首先&#xff0c;我们进入首助编辑高手主页面&#xff0c;会看到有多种…

鸿蒙APP外包开发需要注意的问题

在进行鸿蒙&#xff08;HarmonyOS&#xff09;应用开发时&#xff0c;开发者需要注意一些重要的问题&#xff0c;以确保应用的质量、性能和用户体验。以下是一些鸿蒙APP开发中需要特别关注的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软…