2021.01.27
dp(动态规划)入门
题意:求最大子序列之和。
代码:
#include<cstdio>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<map>
#include<cmath>
#include<iostream>
#include <queue>
#include <stack>
#include<algorithm>
#include<set>
using namespace std;
int main() {
int a[1010], maxn[1010];
int n;
while (scanf("%d", &n) != EOF&&n)
{
int ans = 0;
for (int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
maxn[i] = a[i];
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j < i; j++)
{
if (a[i]> a[j] && (maxn[j] + a[i] > maxn[i]))
maxn[i] = maxn[j] + a[i];
}
ans = max(ans, maxn[i]);
}
printf("%d\n", ans);
}
return 0;
}