java 最大子段和问题,最大连续子数组和(最大子段和)
这里的背景色是:Aquamarine, 十六进制颜色值:#7FFFD4, rgb(127, 255, 212) |
问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n 例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。 -- 引用自《百度百科》 > >
- 算法分析: 本题是为了求最大字段和,令b=sum=0。b用来存前i-1个数的和,sum用来存每一次i-1之前算出来的最大和。从数组第一个数开始,如果b小于0,b为当前的数,否则继续把当前数加上。如果新的和b大于原来的sum,就令sum=b;直到循环结束。程序流程图如下: ![](https://images2018.cnblogs.com/blog/1342826/201803/1342826-20180328220637726-513469668.png) >
- 单元测试 程序的白盒测试有五种覆盖标准:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖 ,条件组合覆盖。 > 第一种方法:条件判定覆盖。覆盖标准:使得判定中的每个条件获得各种可能的结果。 假设输入的数有6个,那么流程图如下: ![](https://images2018.cnblogs.com/blog/1342826/201803/1342826-20180328220712172-232413639.png) 即满足以下条件:1.b>0; > 2.sum
3.i<6; 满足以下覆盖情况: 判定一:i<6;i>=6 判定二:b>0;b<=0 判定三:sum < b;sum>=b
测试用例: (1 2 3 4 5 6) ( 21) ABDEG (i<6;b>0;sum
(1 2 3 4 5 6 7) (28) ABDEG (i>=6;b>0;sum
(-2 -5 -6 -7 -8 -9) (0) ABCEG (i<6;b<0;sum
(6 5 4 3 2 1) (21) ABDEFG (I<6;b>0;sum>b) 结果正确。如图:
第二种方法:条件组合覆盖。覆盖标准:使条件的每种组合至少出现一次。 满足以下覆盖情况: 判定一:1.i<6;2.i>=6 判定二:3.b>0;4.b<=0 判定三:5.sum < b ;6.sum>=b
测试分析:
a[i]
判定条件组合
路径
分析
2
1.3.5
ABCEFG
i<6;b<0;b=a[i]=2;sum
0
1.3.6
ABDEG
i<6;b>=0;b=b+a[i]=2;sum>=b,sum=2
3
1.3.5
ABDEFG
i<6;b>0;b=b=a[i]=5;sum
-6
1.3.6
ABDEG
i<6;b>0;b=b+a[i]=-1;sum>b;sum=5
1
1.4.6
ABCEG
i<6;b<0;b=a[i]=1;sum>b;sum=5
0
1.3.6
ABDEG
i<6;b>0;b=b+a[i]=1;sum>b;sum=5
1
2
A
i>=6
测试结果如图:
- 代码链接 https://coding.net/u/xinjj/p/shuzuzuidaziduanhe/git/tree/master/?public=true
java 最大子段和问题,最大连续子数组和(最大子段和)相关推荐
- 【剑指offer】面试题42:连续子数组的最大和(java)
输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2 ...
- 剑指 Offer 42. 连续子数组的最大和java
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出 ...
- java数据结构与算法之连续子数组问题
①.问题描述 给定一个数组nums,0 < nums.length < 1000,请找出该数组的所有子数组并返回!!! 什么是连续子数组呢?比如原数组 nums = [1, 2, 3] 那 ...
- 连续子数组的最大和Java
目录 题目要求 实现思路 代码展示 代码讲解 总结 题目要求 在一个数组中,找到连续子数组的最大和.重点是1.连续 2.最大 3.和.我们把它翻译成人话,举个例子:arr=[1, -2, 3, 1]. ...
- 算法--三种方法求连续子数组的最大和
这是一道考的烂的不能再烂的题目,但是依然有很多公司乐于将这样的题目作为笔试或面试题,足见其经典. 题目描述: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子 ...
- 连续子数组的最大和python_连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求元素和值最大的那个子数组的和值. C#实现:public static int FindGreatestSum ...
- 最大连续子数组和与JUnit测试
[题目]最大连续子数组和(最大子段和) 背景 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当 ...
- 算法题解:连续子数组的最大和及其下标
题目 输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). 举例 输入:2, -3, 4, 5, -9 输出:9 和最 ...
- 最大连续子数组和求解问题
题目:最大连续子数组和求解问题 一.背景: 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当所 ...
- 返回一个数组的连续子数组和的最大值
package wodeshiyao;import java.util.Scanner;public class lalala {static Scanner scan=new Scanner(Sys ...
最新文章
- MySQL数据库数据类型以及INT(M)的含义
- Leaflet中使用leaflet-sidebar插件实现侧边栏效果
- Poj(1459),最大流,EK算法
- SAP CRM点了附件的超链接后报错的处理方式
- 可持久化3--可持久化01Trie
- 亚马逊推荐python_使用python查找amazon类别
- 模型审查的4个核心要点
- 蓝桥杯 算法训练 数字三角形
- AifbdScore智能AI曲谱乐谱播放识别SDK midi曲谱 应用开发 五线谱 六线谱 四线谱播放
- 使用CleanWipe卸载Symantec Endpoint Protection
- 数学建模【三款超实用建模小软件!】
- linux自学第二天
- Linux驱动中断函数参数详解
- 原型工具Axure:Axure的实用小技巧
- Operator 基础原理和概念
- excel的sumif()函数和sumifs()函数
- Emlog程序纯黑色调CYP音乐模板源码
- Linux-centos7自我学习
- C语言(PTA习题)7-3 数字三角形
- shell脚本中编写SQL中 以传参(${accdate})的方式 动态:求 前12个月的日期和求 前一周(7天的日期)
热门文章
- Inspinia Admin 2.5 All_Full_Version
- 高速电路设计与仿真之PCB篇(二)
- 科普两个著名人工智能思想实验:图灵测试和中文房间
- java.this的作用包括,智慧职教: 以下不是Java中this关键字的作用的是()。
- 联想重装系统去掉保护_如何去掉联想硬盘保护系统?
- 计算机联锁论文致谢,计算机联锁系统 毕业设计论文 定稿.doc
- cass道路设计教程_cass道路曲线设计
- 软考中级软件设计师——数据库系统
- 基于STM8的TM1640驱动程序(附八段数码管配置工具)
- 居民小区变配电电力监控系统-安科瑞苏月婷