
3 1 3 2 4 1 2 3 4 4 3 3 2 1 0
4 10 3
#include <cstdio>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;
int const MAX = 1e3 + 5;
ll dp[MAX];
int val[MAX];
int main()
{
int n;
while(scanf("%d", &n) != EOF && n)
{
ll ans = 0;
for(int i = 0; i < n; i++)
{
scanf("%d", &val[i]);
dp[i] = val[i];
}
for(int i = 0; i < n; i++)
for(int j = 0; j <= i; j++)
if(val[i] > val[j])
dp[i] = max(dp[i], dp[j] + val[i]);
for(int i = 0; i < n; i++)
ans = max(ans, dp[i]);
printf("%lld\n", ans);
}
}HDU 1087 Super Jumping! Jumping! Jumping! (线性dp)
原文:http://blog.csdn.net/tc_to_top/article/details/44651411