动态规划dp —— 27.最长递增子序列

动态规划dp —— 27.最长递增子序列_第1张图片

严格递增:

不能有相同的,必须全部递增

1.状态表示

是什么?dp表中里的值所表示的含义就是状态表示

dp[i]表示:以i位置元素为结尾的所以子序列中,最长的递增子序列

2.状态转移方程

dp[i] 等于什么

根据子序列的长度可以分两种情况:1.长度为1    2.长度大于1

动态规划dp —— 27.最长递增子序列_第2张图片

 长度大于1时,找前面的状态表示里最大的一个加1就是该位置的状态表示

3.初始化

保证填表的时候不越界

表里所有值初始化为1,刚好就不用考虑第一种情况,直接+=就行

4.填表顺序

为了填写当前状态的时候,所需要的状态已经计算过了

5.返回值

题目要求+状态表示 

dp表里的最大值

6.代码

class Solution {
public:
    int lengthOfLIS(vector& nums) {
        int n = nums.size();

        //1.创建dp表
        vector dp(n,1);
        //2.初始化
        //3.填表
        int ret = 1;
        for(int i = 1;i

你可能感兴趣的:(动态规划,动态规划,算法)