选自openjudge 动态规划
这道题经过了一些波折吧,刚开始想设一个数组maxx[n]来表示n之前的最长子序列的最大数,后来发现其实就是a[n];
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=1001;
int a[N];
int dp[N];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
dp[1]=1;
int leizhu;
leizhu=dp[1];
for(int i=2;i<=n;i++)
{
dp[i]=1;
for(int j=1;j<i;j++)
{
if(a[i]>a[j])
dp[i]=max(dp[i],dp[j]+1);
}
if(dp[i]>leizhu)
leizhu=dp[i];
}
cout<<leizhu;
return 0;
}
AC。