#include<iostream>
#include<cmath>
using namespace std;
int a[1005], dp[1005];
int main()
{
int n,sum,i,j;
while( scanf("%d",&n)&&n){
for( i=0; i<n; i++){
scanf("%d",&a[i]);
dp[i]=a[i];
}
sum=0;
for( i=1; i<n; i++){
for( j=0; j<i; j++){
if( a[i]>a[j])
dp[i]=max(dp[i],dp[j]+a[i]);
}
if( dp[i]>sum)
sum=dp[i];
}
printf("%d\n",sum);
}
return 0;
}
唯一需要注意的是:可以隔着跳
HDOJ 1087 Super Jumping! Jumping! Jumping!
最长递增子序列算法
最新推荐文章于 2020-03-11 21:28:05 发布
本文介绍了一种求解最长递增子序列问题的动态规划算法实现,通过二维数组dp记录中间结果,避免了重复计算,提高了算法效率。程序能够处理包含最多1005个元素的序列。
334

被折叠的 条评论
为什么被折叠?



