其他分享
首页 > 其他分享> > 1016. 最大上升子序列和

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;
}

标签:int,res,namespace,传送门,LIS,序列,1016,上升
来源: https://www.cnblogs.com/littlehb/p/15649288.html