题目大意:有N个数字,要求你求出最大递增和
解题思路:DAG裸题
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int n;
int num[N];
int dp[N];
void init() {
for (int i = 0; i < n; i++)
scanf("%d", &num[i]);
}
void solve() {
for (int i = 0; i < n; i++)
dp[i] = num[i];
for (int i = 0; i < n; i++)
for (int j = 0; j < i; j++)
if (num[i] > num[j])
dp[i] = max(dp[i], dp[j] + num[i]);
int ans = 0;
for (int i = 0; i < n; i++)
ans = max(ans, dp[i]);
printf("%d\n", ans);
}
int main() {
while (scanf("%d", &n) != EOF && n) {
init();
solve();
}
return 0;
}