http://acm.hdu.edu.cn/showproblem.php?pid=1087
求解最大递增子序列和,题目不要求是连续的最大递增子序列。
#include <cstdio>
#include<algorithm>
#include<string.h>
#include<iostream>
using namespace std;
int main()
{
int n;
int dp[1010],arr[1010];
while(~scanf("%d",&n),n)
{
for(int i=1;i<=n;i++)
{
scanf("%d",arr+i);
}
arr[0]=-1;
arr[n+1]=2147483647;
memset(dp,0,sizeof(dp));
int maxv=0;
for(int i=0;i<n+1;i++)
{
int val=arr[i];
for(int j=0;j<i;j++)
{
if(arr[j]<val)
{
dp[i]=max(dp[i],dp[j]+val);
}
}
maxv=max(maxv,dp[i]);
}
printf("%d\n",maxv);
}
}