AcWing 1016. 最大上升子序列和

题目传送门

这道题没什么可以说的了,不再问最长上升子序列的长度,而是问题上升子序列的最大和,本质上其实是一样的。

#include <bits/stdc++.h>

using namespace std;

//最大上升子序列和
int n;
const int N = 1010;
int a[N];
int f[N];
int mx;

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++)cin >> a[i];
    //正向求解 LIS问题(朴素版本O(N^2))
    for (int i = 1; i <= n; i++) {
        f[i] = a[i];//最大上升子序列(个数) 这里是1,此处是a[i]
        for (int j = 1; j < i; j++)
            //最大上升子序列(个数) 这里是加1,此处是+a[i]
            if (a[i] > a[j]) f[i] = max(f[i], f[j] + a[i]);
        mx = max(mx, f[i]);
    }
    printf("%d ", mx);
    return 0;
}
原文地址:https://www.cnblogs.com/littlehb/p/15649288.html