另一动态规划基本题型,LIS...
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1087
代码如下:
#include <stdio.h>
int n;
int max;
int num[1000005];
int dp[1000005];
void d_p()
{
max = dp[0];
for( int i = 0; i < n; i++ )
{
for( int j = 0; j < i; j++ )
if( num[j]<num[i] && dp[i]<dp[j]+num[i] )
dp[i] = dp[j]+num[i];
if( max < dp[i] )
max = dp[i];
}
}
int main()
{
while( scanf( "%d", &n ), n )
{
for( int i = 0; i < n; i++ )
{
scanf("%d",&num[i]);
dp[i] = num[i];
}
d_p();
printf("%d\n",max);
}
return 0;
}