题目链接:http://poj.org/problem?id=2533
题意:求一串长度为N的数字的最长递增子序列的数字个数。
代码:
#include<stdio.h>
int arr[1010];
int dp[1010];
int N;
int main()
{
while(scanf("%d",&N)!=EOF)
{
int i,j,k;
for(i=1;i<=N;i++)
{
scanf("%d",&arr[i]);
dp[i] = 1;
}
for(j=2;j<=N;j++)
{
int temp=0;
for(k = j-1;k>=1;k--)
{
if(arr[j] > arr[k] && temp<dp[k])
{
temp = dp[k];
}
}
if(temp !=0)
dp[j] = temp+1;
}
int ans =0;
for(i=1;i<=N;i++)
if(ans < dp[i])
ans = dp[i];
printf("%d\n",ans);
}
return 0;
}