[恢]hdu 1257

2011-12-17 07:29:24

地址:http://acm.hdu.edu.cn/showproblem.php?pid=1257

题意:中文。最少拦截系统。

mark:经典dp。最少拦截系统数=最长非降子序列(LIS)数。O(n^2)水过。

代码:

# include <stdio.h>


int a[1010] ;
int dp[1010] ;
int n ;


int max(int a, int b){return a>b?a:b;}


int lis()
{
int i, j, ans = 0 ;
dp[0] = 1 ;
for (i = 1 ;i < n ; i++)
{
dp[i] = 1 ;
for(j = 0 ; j < i ; j++)
{
if (a[j] > a[i]) continue ;
dp[i] = max(dp[i], dp[j]+1) ;
}
if (dp[i] > ans) ans = dp[i] ;
}
return ans ;
}


int main ()
{
int i ;
while (~scanf ("%d", &n))
{
for (i = 0 ; i < n ; i++)
scanf ("%d", &a[i]) ;
printf ("%d\n", lis()) ;
}
return 0 ;
}



posted @ 2012-01-06 22:12  Seraph2012  阅读(122)  评论(0编辑  收藏  举报