题目链接:http://poj.org/problem?id=1887
题意:题目很长,但内容很简单,就是求一串数字的最长递减子序列的长度。
代码:
#include<stdio.h>
int arr[10010];
int dp[10010];
int main()
{
int ncase=1;
while(1)
{
int i=0;
int len;
arr[0]=0;
while(arr[i] > -1)
{
i++;
scanf("%d",&arr[i]);
}
if(i == 1)
break;
for(len = 1;len<i;len++)
dp[len] = 1;
len--;
for(int j=2;j<=len;j++)
{
int temp=0;
for(int 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<=len;i++)
if(ans < dp[i])
ans = dp[i];
printf("Test #%d:\n",ncase++);
printf(" maximum possible interceptions: %d\n\n",ans);
}
return 0;
}