题目:POJ2533
#include <stdio.h>
#include <algorithm>
using namespace std;
int num[1005];
int dp[1005];
int main()
{
int n;
while (scanf("%d",&n) != EOF)
{
//dp[i]表示以第i个数结尾的上升子序列元素个数
for (int i = 1; i <= n; i++)
{
scanf("%d",&num[i]);
dp[i] = 1;//初始化为1
}
int ans = 1;
for (int i = 2; i <= n; i++)
{
for (int j = 1; j < i; j++)
{
if (num[j] < num[i]) dp[i] = max(dp[i],dp[j]+1);
}
ans = max(ans,dp[i]);
}
printf("%d\n",ans);
}
return 0;
}