这里的背景色是: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 最大子段和问题,最大连续子数组和(最大子段和)相关推荐

  1. 【剑指offer】面试题42:连续子数组的最大和(java)

    输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2 ...

  2. 剑指 Offer 42. 连续子数组的最大和java

    输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出 ...

  3. java数据结构与算法之连续子数组问题

    ①.问题描述 给定一个数组nums,0 < nums.length < 1000,请找出该数组的所有子数组并返回!!! 什么是连续子数组呢?比如原数组 nums = [1, 2, 3] 那 ...

  4. 连续子数组的最大和Java

    目录 题目要求 实现思路 代码展示 代码讲解 总结 题目要求 在一个数组中,找到连续子数组的最大和.重点是1.连续 2.最大 3.和.我们把它翻译成人话,举个例子:arr=[1, -2, 3, 1]. ...

  5. 算法--三种方法求连续子数组的最大和

    这是一道考的烂的不能再烂的题目,但是依然有很多公司乐于将这样的题目作为笔试或面试题,足见其经典. 题目描述: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子 ...

  6. 连续子数组的最大和python_连续子数组的最大和

    题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求元素和值最大的那个子数组的和值. C#实现:public static int FindGreatestSum ...

  7. 最大连续子数组和与JUnit测试

    [题目]最大连续子数组和(最大子段和) 背景 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当 ...

  8. 算法题解:连续子数组的最大和及其下标

    题目 输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). 举例 输入:2, -3, 4, 5, -9 输出:9 和最 ...

  9. 最大连续子数组和求解问题

    题目:最大连续子数组和求解问题 一.背景: 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当所 ...

  10. 返回一个数组的连续子数组和的最大值

    package wodeshiyao;import java.util.Scanner;public class lalala {static Scanner scan=new Scanner(Sys ...

最新文章

  1. MySQL数据库数据类型以及INT(M)的含义
  2. Leaflet中使用leaflet-sidebar插件实现侧边栏效果
  3. Poj(1459),最大流,EK算法
  4. SAP CRM点了附件的超链接后报错的处理方式
  5. 可持久化3--可持久化01Trie
  6. 亚马逊推荐python_使用python查找amazon类别
  7. 模型审查的4个核心要点
  8. 蓝桥杯 算法训练 数字三角形
  9. AifbdScore智能AI曲谱乐谱播放识别SDK midi曲谱 应用开发 五线谱 六线谱 四线谱播放
  10. 使用CleanWipe卸载Symantec Endpoint Protection
  11. 数学建模【三款超实用建模小软件!】
  12. linux自学第二天
  13. Linux驱动中断函数参数详解
  14. 原型工具Axure:Axure的实用小技巧
  15. Operator 基础原理和概念
  16. excel的sumif()函数和sumifs()函数
  17. Emlog程序纯黑色调CYP音乐模板源码
  18. Linux-centos7自我学习
  19. C语言(PTA习题)7-3 数字三角形
  20. shell脚本中编写SQL中 以传参(${accdate})的方式 动态:求 前12个月的日期和求 前一周(7天的日期)

热门文章

  1. Inspinia Admin 2.5 All_Full_Version
  2. 高速电路设计与仿真之PCB篇(二)
  3. 科普两个著名人工智能思想实验:图灵测试和中文房间
  4. java.this的作用包括,智慧职教: 以下不是Java中this关键字的作用的是()。
  5. 联想重装系统去掉保护_如何去掉联想硬盘保护系统?
  6. 计算机联锁论文致谢,计算机联锁系统 毕业设计论文 定稿.doc
  7. cass道路设计教程_cass道路曲线设计
  8. 软考中级软件设计师——数据库系统
  9. 基于STM8的TM1640驱动程序(附八段数码管配置工具)
  10. 居民小区变配电电力监控系统-安科瑞苏月婷