美文网首页
最大上升子序列和

最大上升子序列和

作者: 雇个城管打天下 | 来源:发表于2018-08-17 13:52 被阅读18次

解析

求一段最大上升子序列的和,我们假设现在已经遇到第i个数了,那么从第0个数到第i个数之间的最大上升子序列和一定是第0-i之间的某个小于第i个数的最大子序列和加上第i个数,这个地方可能有点绕,拿示例来说明下:

i 1 2 3 4 5 6 7
a[i] 1 7 3 5 9 4 8

从第1个数到第4个数,即(1,7,3,5)这个序列中的最大上升子序列的和一定是某个小于第4个数(也就是5)的某个数(可能是1或者3)的序列(即(1)序列或者(1,3)序列)的和加上5。

因此只需要找出i之前的小于第i个的数的子序列的和并求出期间的最大值就可以了,因此,我们假设一个opt数组opt[i]表示的是从第1个数到第i个数之间的最大子序列的和,所以opt[i]=max{opt[0],~,opt[i]},最后只要求出opt[]数组中的最大值即可。

代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] a = new int[n + 1];
        int[] opt = new int[n + 1];
        for (int i = 1; i < n + 1; i++) {
            a[i] = scanner.nextInt();
            opt[i] = a[i];
        }
        for (int i = 1; i < n + 1; i++) {
            for (int j = i - 1; j >= 0; j--) {
                if (a[i] > a[j]) {
                    int A = opt[j] + a[i];
                    int B = opt[i];
                    opt[i] = Math.max(A, B);
                }
            }
        }
        int max = 0;
        for (int x : opt) {
            if (x > max)
                max = x;
        }
        System.out.println(max);
    }
}

相关文章

  • 最大上升子序列和

    解析 求一段最大上升子序列的和,我们假设现在已经遇到第i个数了,那么从第0个数到第i个数之间的最大上升子序列和一定...

  • 算法(04)动态规划

    零钱问题 背包问题 最长公共子序列 最长公共子串 最长上升子序列 最大连续子序列和

  • 动态规划

    最大子串和 Maximum Subarray 最长上升子序列Longest Increasing Subsequence

  • 子序列——最大上升子序列LIS(一)

    LeetCode_300_LongestIncreasingSubsequence 题目分析: 解法一:直接dp ...

  • 公共子序列问题

    最长公共子序列 最长上升子序列 最长公共上升子序列

  • 动态规划_最大上升子序列

    一个序列有N个数:A[1],A[2],…,A[N],求出最长上升子序列的长度(LIS:longest increa...

  • LIS

    求最大上升子序列(Longest Increasing Subsequence),动态规划中最基础的题目。 状态:...

  • LintCode 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明最长上升子序列的定义:最长上升子序列...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问...

网友评论

      本文标题:最大上升子序列和

      本文链接:https://www.haomeiwen.com/subject/xybzbftx.html