这道题用到逆序法,看着是求最长非增序列,其实是企业最长非减序列。
连接:http://acm.hdu.edu.cn/showproblem.php?pid=1257&PHPSESSID=a4cesjtlgc8qnqr91kendvslv2
#include<stdio.h>
int main()
{
int n,i,j,num,h[1000],dp[1000];
while(scanf("%d",&n)!=EOF)
{
num=0;
for(i=0;i<n;i++)
{
scanf("%d",&h[i]);
dp[i]=1;
}
for(i=1;i<n;i++)
for(j=0;j<i;j++)
{
if(h[j]<h[i]&&dp[j]+1>dp[i])
dp[i]=dp[j]+1;
if(num<dp[i])
num=dp[i];
}
printf("%d\n",num);
}
return 0;
}