1016. 最大上升子序列和 - AcWing题库

思路:本题就是简单得最大上升子序列的变化,将长度改为和即可。

ac代码:

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 1010;

int n;
int f[N], a[N];

int main()
{
    scanf("%d", &n);

    for (int i = 1; i <= n; i ++ ) {
        scanf("%d", &a[i]);
    }

    for (int i = 1; i <= n; i ++ ) {
        f[i] = a[i];
        for (int j = 1; j < i; j ++ ) {
            if (a[j] < a[i]) {
                f[i] = max(f[i], f[j] + a[i]);
            }
        }
    }

    int res = 0;
    for (int i = 1; i <= n; i ++ ) res = max(res, f[i]);

    printf ("%d\n", res);

    return 0;
}

0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注