这道题是最基础的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;
}