dp的第一课 Acwing 895.最长上升子序列

在这里插入图片描述
这道题是最基础的dp,其实也不是很难,但是需要注意几点,dp[i]的含义是以g[i]最大值最长的上升子序列,之前以为i点之前的最长上升子序列(反正就是想法错了)
然后代码如下

#include<iostream>
#include<algorithm>
using namespace std;
const int N=1010;
int dp[N];
int g[N],mx=0,mmx=0;
int main(void)
{
    
    
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>g[i];
    for(int i=1;i<=n;i++)
    {
    
    
    mx=0;
    for(int j=1;j<i;j++)
    {
    
    
        if(g[i]>g[j])
        mx=max(mx,dp[j]);
    }
    dp[i]=mx+1;
    mmx=max(mmx,dp[i]);
    }
    cout<<mmx;
}

猜你喜欢

转载自blog.csdn.net/qq_52358098/article/details/113591664