最大连续子序列和问题(Maximum Consecutive Subsequence Sum)
该算法的定义是:给出一个int序列,元素有正有负,找出其中的最大连续子序列的和。
例如:-2,11,-4,13,-5-2,;最大和为20(11,-4, 13)。
怎么考虑这个问题呢?
要充分利用,连续,这个条件。
连续子序列的和可能为正,也可能为负。如果为正,那么我们要继续加下去,因为如果后面一个数是正数,
最大子序列和必定包括前序列的和(毕竟前者和为正),如果后面一个是负数,我们也加,直到子序列的和不为正为止。
因为它不为正,所以如果后面有更大的连续子序列,那么也不会包括它,因为加上一个非正数不会更大。所以要重新开始计数。
此时还有一个问题。如果全是正数,那么越加越大,没问题。但如果突然加上一个负数,后面又没有更大的连续子序列,即使加后的
和为正,我们也找不到比未加前更大的连续子序列了。所以我们还需要另外一个变量来保存最大连续子序列的和。
考虑了这两点,那么算法也就很简单了,下面给出java写的程序示例。
- public static int maxSubSum(int[] array)
- {
- int max = 0, tmp = 0;
- for (int i = 0; i < array.length; i++) {
- tmp += array[i];
- if (tmp > max) {
- max = tmp;
- }
- else if(tmp <= 0){
- tmp = 0;
- }
- }
- return max;
- }
最大连续子序列和问题(Maximum Consecutive Subsequence Sum)的更多相关文章
- [Swift]LeetCode659. 分割数组为连续子序列 | Split Array into Consecutive Subsequences
You are given an integer array sorted in ascending order (may contain duplicates), you need to split ...
- 寻找最大连续子序列/Find the max contiguous subsequence
寻找最大连续子序列 给定一个实数序列X1,X2,...Xn(不需要是正数),寻找一个(连续的)子序列Xi,Xi+1,...Xj,使得其数值之和在所有的连续子序列数值之和中为最大. 一般称这个子序列为最 ...
- 将数组划分成连续子序列 Split Array into Consecutive Subsequences
2018-08-04 20:47:43 问题描述: 问题描述: 本题需要的是将一个数组划分成子序列,保证每个子序列是连续的,并且长度要大于等于3. 解题思路是使用贪心算法,首先对数组中的数字进行计数, ...
- HDU 1231 最大连续子序列 (动态规划)
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- PAT 1007 Maximum Subsequence Sum 最大连续子序列和
Given a sequence of K integers { N1, N2, …, NK }. A continuous subsequence is defined to be { Ni, Ni ...
- PAT 1007 Maximum Subsequence Sum (最大连续子序列之和)
Given a sequence of K integers { N1, N2, ..., *N**K* }. A continuous subsequence is defined to be { ...
- Maximum Subsequence Sum【最大连续子序列+树状数组解决】
Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i < ...
- POJ - 3061 Subsequence(连续子序列和>=s的最短子序列长度)
Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...
- PAT Maximum Subsequence Sum[最大子序列和,简单dp]
1007 Maximum Subsequence Sum (25)(25 分) Given a sequence of K integers { N~1~, N~2~, ..., N~K~ }. A ...
随机推荐
- as3基础知识
在AS3中,值类型数据(简单类型:Boolean.int.Number.String.uint)和引用类型数据(复杂类型)都是 对象,所以这两种类型对象存储的都是引用.但是,对应值类型数据,是一种不变 ...
- main函数参数的使用
int main(int argc, char * argv[]) argc: argument count argv:argument vector 其中, char * argv[] 指针数组 c ...
- MSP430G2553之timerA产生PWM
总结:选SMCLK(可以测出来) 若选ACLK,经示波器PWM时有时无 举例一: #include <MSP430G2553.h> #define CPU_F ((doub ...
- JS 获取当前浏览器类型
JS代码: function getType() { if(navigator.userAgent.indexOf("MSIE")>0) { return "MSI ...
- MapReduce数据流(二)
输入块(InputSplit):一个输入块描述了构成MapReduce程序中单个map任务的一个单元.把一个MapReduce程序应用到一个数据集上,即是指一个作业,会由几个(也可能几百个)任务组成. ...
- 分享我设计的iOS项目目录结构
公司新项目就要着手研发了,希望能为这个项目多准备点知识.回想自己做过的项目,目录结构的划分总不如我的心意,有些目录命名不规范导致表达不明确,有些目录因为不具有代表性,导致在实际中不能充分发挥作用,导致 ...
- SQL Server 2005使用作业设置定时任务(转)
1.开启SQL Server Agent服务 使用作业需要SQL Agent服务的支持,并且需要设置为自动启动,否则你的作业不会被执行. 以下步骤开启服务:开始-->>>运行--&g ...
- EF学习笔记(二)
DbContext 1.指定连接字符串(上一章提到) public string ConnectionStringName { get; private set; } /// <summary& ...
- 如何修改svn的密码或重新输入用户名密码
在Eclipse 使用SVN 的过程中大多数人往往习惯把访问SVN 的用户名密码自动保存起来以便下次自动使用,不要再次手工输入,而此时(自动保存密码后),svn又不存在一个显式的登陆框了,但是有些时候 ...
- ORA-01084: OCI 调用中的参数无效
clob,nclob当值为“”空字符串时,就会出现这个错误 OracleParameter op = new OracleParameter("CONTENTclog", Orac ...