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