首页 > 其他分享 >代码随想录训练营第44天|最长公共子序列

代码随想录训练营第44天|最长公共子序列

时间:2024-09-27 20:22:22浏览次数:3  
标签:int max 44 随想录 text1 text2 vector 训练营 dp

1143. 最长公共子序列

class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        text1.insert(text1.begin(),' ');
        text2.insert(text2.begin(),' ');
        int n1=text1.length(), n2=text2.length(), max_len=0;
        vector<vector<int>> dp(n1,vector<int>(n2,0));
        for(int i=1; i<n1; i++){
            for(int j=1; j<n2; j++){
                if(text1[i]==text2[j])
                    dp[i][j]=dp[i-1][j-1]+1;
                else
                    dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
                max_len=max(max_len,dp[i][j]);
            }
        }
        return max_len;
    }
};

加入虚拟头简化dp初始化,定义dp[i][j]:截止到text1[i]及text2[j],两个子串所能形成的最长子序列长度。

转移方程:

1.若text1[i]==text2[j]:则此时最长子序列可由dp[i-1][j-1],加上相等的这一个,转移而来。

2.若二者不等,则至少有一个元素在子序列的构建中被剔除,可能剔除text1的末尾,则此时由dp[i-1][j]转移而来,或者text2的末尾,则由dp[i][j-1]转移而来。

1035. 不相交的线

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

本质就是求最长子序列,和上题一模一样。

53. 最大子数组和

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        vector<int> dp=nums;
        int max_num=dp[0];
        for(int i=1; i<nums.size(); i++){
            if(dp[i-1]>0)
                dp[i]+=dp[i-1];
            max_num=max(max_num,dp[i]);
        }
        return max_num;
    }
};

定义dp[i]:截止到nums[i](包含)的最大子数组和

转移方程:

  • 使用前i-1个元素,此时要累加之前的dp[i-1]。
  • 不使用,直接从nums[i]重新开始。

取两种情况的较大值。

标签:int,max,44,随想录,text1,text2,vector,训练营,dp
From: https://blog.csdn.net/jiyisuifeng1991/article/details/142588742

相关文章

  • 编码训练营的真相:投资还是风险?
    所以,如果你像大约7年前的我一样,你可能会问自己“我如何进入科技领域,找到一份软件开发人员的工作,并赚大钱?”或类似的东西。好吧,好消息是我可能有您正在寻找的答案!什么是编码训练营?编码训练营是一门类似课堂的结构化课程,可以在线或面对面,教您如何编码。听起来很简单,但实际上......
  • 【笔记】微分几何(40420644)
    [40420644]微分几何(DifferentialGeometry)开课院系:数学系主讲教师:李海中课程学分:4课程学时:65上课时间:每周一15:20~16:55、每周四8:00~9:35。教材:《微分几何(第2版)》–彭家贵,陈卿(2021,高等教育出版社)。参考书:DifferentialGeometryofCurvesandSurfaces(2nde......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素、977.有序数组的平方。
    704.二分查找总结:防止int溢出:classSolution{public:intsearch(vector<int>&nums,inttarget){intleft=0;intright=nums.size()-1;while(left<=right){intmiddle=(left+right)/2;//intmid=(right-left)/......
  • SM2244LT量产工具经验分享,SM2244LT量产工具下载,SM2244LT开卡教程
    一、注意事项1、个人观点,仅供参考2、开卡后无法恢复数据二、开卡前的准备1、坏固态硬盘一个(确认主控芯片是慧荣SM2244LT)2、尖头镊子(细铜线、铁丝等能导电的金属都行,塑料的不行)3、一台电脑(可以是笔记本或台式机,台式机最好不要用后置USB)4、转接卡(可以是开卡板、硬盘盒等,建议用ASM1153......
  • 【2024潇湘夜雨】WIN10_LTSC2021_21H2.19044.4957软件选装纯净特别版9.26
    【系统简介】=============================================================1.本次更新母盘来自WIN10_LTSC2021_21H2.19044.4957.2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为19044.49......
  • 计算机毕业设计—64422 个人事务app,免费领取源码
    摘要 随着人们生活压力的增加和事务的增多,个人事务管理变得越来越重要。人们需要一个有效的方式来管理和组织各种个人事务,如日程安排、任务管理、记账预算等。基于此,使用Java开发技术,基于SSM框架结合MySQL数据库设计与实现一个的个人事务app可以满足用户的需求,提供包括但......
  • 2024牛客暑期多校训练营1——A,B
    题解:更新:k=1的时候要乘n代码:#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=5e3+5;typedeflonglongll;typedefpair<int,int>PII;intT;intn,m,mod;intfac[N][N];intdp[N][N];intper[N];intpower(inta,int......
  • P4447 [AHOI2018初中组] 分组
    [AHOI2018初中组]分组题目描述小可可的学校信息组总共有$n$个队员,每个人都有一个实力值$a_i$。现在,一年一度的编程大赛就要到了,小可可的学校获得了若干个参赛名额,教练决定把学校信息组的$n$个队员分成若干个小组去参加这场比赛。但是每个队员都不会愿意与实力跟自己过于......
  • SSM实验室排课系统 毕业设计源码24944
    摘要随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是使用动态网页开发技术java作为系统的开发语言,MySQL作为后台数据库。整个开发过程首先对实验室排......
  • 【YashanDB知识库】多表更新报错 YAS-04344 multi-table update is not supported
    本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369204.html?templateId=1718516【问题分类】功能使用【关键字】YAS-04344,UPDATE,multi-tableupdate,MERGEINTO【问题描述】在崖山环境执行类似以下语法进行多表更新报YAS-04344multi-tableupdate......