动态规划:最大连续子序列和

问题:给出一个数组,求其连续子序列的最大和

package 动态规划;

/**
 * 给出一个数组,求其连续子数组的最大和
 * @author Administrator
 *
 */
public class MaxSum {

    public static void main(String[] args) {

        int[] arr = new int[]{-3,1,-3,4,-1,2,1};
        int max=arr[0];
        int current=arr[0];
        for(int i=1;i<arr.length;i++){
        if(current<0){
        current = arr[i];
        }else{
        current += arr[i];
        }
        if(current>max) max=current;
        }
        System.out.println(max);
    }            

}
时间: 2024-10-11 15:27:04

动态规划:最大连续子序列和的相关文章

动态规划——最大连续子序列和

最大连续子序列和问题如下: 下面介绍动态规划的做法,复杂度为 O(n). 步骤 1:令状态 dp[i] 表示以 A[i] 作为末尾的连续序列的最大和(这里是说 A[i] 必须作为连续序列的末尾). 步骤 2:做如下考虑:因为 dp[i] 要求是必须以 A[i] 结尾的连续序列,那么只有两种情况: 这个最大和的连续序列只有一个元素,即以 A[i] 开始,以 A[i] 结尾. 这个最大和的连续序列有多个元素,即从前面某处 A[p] 开始 (p<i),一直到 A[i] 结尾. 对第一种情况,最大和就是

HDU-1231-最大连续子序列(Java+DP动态规划)

最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21101    Accepted Submission(s): 9361 Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j

动态规划--连续子序列的最大和

给定k个整数的序列{N1,N2,...,Nk },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= k.最大连续子序列是所有连续子序中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{11,-4,13},最大连续子序列和即为20. 注:为方便起见,如果所有整数均为负数,则最大子序列和为0. 算法一,穷举法,找出所有子数组,然后求出子数组的和,在所有子数组的和中取最大值 /*O(n^

动态规划:最大连续子序列乘积

题目描述: 给定一个浮点数序列(可能有正数.0和负数),求出一个最大的连续子序列乘积. 分析:若暴力求解,需要O(n^3)时间,太低效,故使用动态规划. 设data[i]:第i个数据,dp[i]:以第i个数结尾的连续子序列最大乘积, 若题目要求的是最大连续子序列和,则易确定状态转移方程为: dp[i]=max(data[i],dp[i-1]+data[i])(dp[i]为以第i个数结尾的连续子序列最大和) 但乘积存在负负得正的问题,即原本很小的负数成了一个负数反而变大了,(负数逆袭了), 故不能

动态规划经典题目:最大连续子序列和

最大连续子序列和问题 给定k个整数的序列{N1,N2,...,Nk },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= k.最大连续子序列是所有连续子序中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{11,-4,13},最大连续子序列和即为20. 注:为方便起见,如果所有整数均为负数,则最大子序列和为0. 解决这样一个问题是一个很有趣的过程,我们可以尝试着从复杂度比较高的算法

动态规划 HDU1231-------最大连续子序列

Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大连续子序列是所有连续子序列中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和 为20. 在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该 子序列的第一个和最后

最大连续子序列和-动态规划

题目描述: 给定K个整数的序列{ N1, N2, -, NK },其任意连续子序列可表示为{ Ni, Ni+1, -, Nj },其中 1 <= i <= j <= K.最大连续子序列是所有连续子序中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20. 注意: 最大连续子序列和如果为负,则返回0:而本题目中的最大连续子序列和并不返回0,如果是全为负数,则返回最大的负数即可. 思路分析: -具有

最大连续子序列和 分治思想和动态规划思想

解决最大连续子序列和的两种方法:分治,动态规划. 分治时间复杂度虽然更高,但我还是写了一遍加深对这种思想的理解:将一个问题分治成若干个小的同样思路的子问题来解决.本题将所求序列等分成左右两个子序列,愿序列的最大子序列和必是左序列最大子序列和,有序列最大子序列和,跨左右子序列最大和三者中的最大者. 动态规划:用dp[i]更新dp[i+1]就行. 分治: // // main.cpp // 1109 // // Created by Fangpin on 15/3/9. // Copyright (

HDU 1081 To the Max 最大子矩阵(动态规划求最大连续子序列和)

Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater located within the whole array. The sum of a rectangle is the sum of all the elements in that rectangle. I