动态规划_最长递增子序列_C++

一.题目解析:

子序列不一定是连续的,但是是严格递增的

算法讲解:

1.状态表示:

dp[i]表示以i位置为结尾,子序列的长度最长

2.状态转移方程

3.初始化

我们单独一个就可以看作是形成一个子序列,所以我们将dp表初始化为1

4.填表顺序

从左向右

5.返回值

返回dp表的最大值

二.代码实现

cpp 复制代码
class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        int n=nums.size();
        vector<int>dp(n,1);//初始化为1,我们单独就可以形成一个子序列
        int ret=1;
        for(int i=1;i<n;i++)
        {
            for(int j=0;j<i;j++)
            {
                if(nums[j]<nums[i]) dp[i]=max(dp[i],dp[j]+1);
                ret=max(dp[i],ret);
            }
        }
        return ret;
    }
};
相关推荐
不想看见4042 小时前
Find All Numbers Disappeared in an Array数组--力扣101算法题解笔记
笔记·算法·leetcode
月明长歌2 小时前
【码道初阶-Hot100】LeetCode 438 + 567 对照详解:一套滑动窗口模板,彻底讲透“固定长度窗口 + 计数数组 + count维护”
算法·leetcode·滑动窗口
旖-旎2 小时前
二分查找(搜索插入位置)(3)
c++·算法·二分查找·力扣·双指针
咯哦哦哦哦2 小时前
windows下VSCode配置C++/CMake/Qt/MVSC 开发环境 【电脑已经安装vs2022】
c++·vscode·qt
XW01059992 小时前
5-11字典合并
数据结构·python·算法
wunianor2 小时前
[算法]2026年3月14日米哈游校招算法笔试题题解
算法
Elias不吃糖2 小时前
LeetCode-44 回溯解法
算法·leetcode·职场和发展
程序员爱酸奶2 小时前
Java常用设计模式
java·开发语言·设计模式