1016. 最大上升子序列和

题目传送门

#include <bits/stdc++.h>

using namespace std;

//最大上升子序列和
//这个就不是LIS的变形了,需要全新分析了。
int n;
const int N = 1010;
int a[N];
int f[N];

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++)cin >> a[i];

    //正向求解 LIS问题
    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]);

    }
    int res = 0;
    for (int i = 1; i <= n; i++) res = max(res, f[i]);
    printf("%d ", res);
    return 0;
}
上一篇:用Tensorflow搭建预测磁盘性能的机器学习模型


下一篇:482. 合唱队形