最长上升子序列,最最经典点的DP题。
注意在这个题中要求是严格上升!!!
下面是代码:
#include<stdio.h>
int main()
{
int n,a[1005],dp[1005];
scanf("%d",&n);
int i,m,j,max1=1;
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
dp[0]=1;
for(i=1; i<n; i++)
{
m=0;
for(j=i-1; j>=0; j--)
{
if(a[i]>a[j]&&m<dp[j])
{
m=dp[j];
}
}
dp[i]=m+1;
if(max1<dp[i])
{
max1=dp[i];
}
}
printf("%d\n",max1);
return 0;
}