題目鏈接:http://poj.org/problem?id=2533
題意:給出大小n的序列,最長遞增子序列
思路:做過很多遍了……dp[i]代表以s[i]爲尾的子序列最大長度,若s[i]>s[j](0<=j<=i-1),dp[i]=max(dp[i],dp[j]+1)就可以了
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int dp[1030],s[1030];
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
for (int i=1;i<=n;i++)
{
scanf("%d",&s[i]);
dp[i]=1;
}
int res=1;
for (int i=1;i<=n;i++)
{
for (int j=1;j<i;j++)
{
if (s[i]>s[j])
{
dp[i]=max(dp[i],dp[j]+1);
}
res=max(res,dp[i]);
}
}
printf("%d\n",res);
}
}