码迷,mamicode.com
首页 > 其他好文 > 详细

软件工程第三次作业

时间:2018-04-01 00:59:21      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:info   元素   图片   思路   max   详细   最大子段和   整数   测试   

最大连续子数组和(最大子段和)

1. 题目要求

  • 给定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。引用自《百度百科》.

2.编程环境

  • 使用java语言编写,使用eclipse。

3.解题的思路

  • 从头开始累加数组的元素,初始值 sum 为 0 。假设a b c都为正整数,第一步 把 a累加, 则 sum =- a,接着累加 b , sum = -a+b,再接着 c累加 sum = -a+b+c,但是此时我们发现 sum <c ,第一个元素开始累加到第三个元素的 和 sum 比 第三个元素竟然还要小,那么我们就舍去前面的值,从第三个元素开始累加 ,此时 sum = c。就这样遍历到最后一个元素,得出最大字段的值。

4.代码的编写

  • 在主函数中完成数列个数的输入,和每个数列的值以及对子函数的调用。

  • 在子函数中根据由主函数传递的数列个数,及每个数来实现对于最大字段和值的计算。

  • 代码截图如下:

技术分享图片

5.单元测试

  • 五种逻辑覆盖的方法有:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖。
  • 我这里采用条件覆盖,测试样例含有三种可能:

(1)数列全为正数.(2)数列全为负数。(3)数列中既有负数还有正数。

  • 单元测试如下图:

技术分享图片

6.程序的详细代码

软件工程第三次作业

标签:info   元素   图片   思路   max   详细   最大子段和   整数   测试   

原文地址:https://www.cnblogs.com/wanglingjie/p/8684764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!