最大连续子数组和

题目

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

具体要求

(1) 请从上述两个题目中根据个人实力任选一题,要求写出可运行的完整代码提交至GitHub或者Coding.net系统中,并将代码地址附到博客内,题目(1)可以参考这篇博文
(2) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例
(3) 请利用自动测试工具对程序进行测试
(4) 请将程序运行结果和自动测试分析结果截图附到博客中

因此在阅读过《百度百科》之后选择了动态规划法,这种方法相对来讲比较简单,比较便于编程。

解题过程

动态规划法

1. 定义一个数组A[20],设输入整数个数为num,数组长度为size,并分别输入变量。定义两个变量maxTemp、maxResult,起始时使maxTemp = 0;maxResult = 0;

2. 定义变量i=0开始循环,(1)当 i < size 时。 (2)当 maxTemp >=0 时让 maxTemp = A[i] + maxTemp ;否则 maxTemp = A[i] ;(3)当maxResult > maxTemp 时使MaxResult = maxTemp;

3. 循环结束输出结果。

流程图

程序代码coding地址

测试代码coding地址


单元测试

程序的白盒测试有五种覆盖标准:语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖
使用的方法为判定/条件覆盖条件组合覆盖
覆盖标准:使得判定中的每个条件获得各种可能的结果。假设数组长度为6个.

图中条件如下:

  • (1) i < size ;
  • (2) maxTemp >= 0 ;
  • (3) maxTemp > maxResult ;

条件为以下六个条件:

  • (1) i < size ;
  • (2) i >= size ;
  • (3) maxTemp >= 0 ;
  • (4) maxTemp < 0 ;
  • (5) maxTemp > maxResult ;
  • (6) maxTemp <= maxResult ;

使用判定/条件覆盖

执行路径为A-B-C-E-F-G-H ∧ A-B-D-E-G-H;

  • 设整数个数为6个;整数为1,2,3,4,5,6;应输出的结果为21.
  • 例子包含(1),(2),(3),(5)条件;路径为:A-B-C-E-F-G-H;

  • 设整数个数为6个;整数为-1,-2,-3,-4,-5,-6;应输出的结果为0.
  • 例子包含(1),(2),(4),(6)条件;路径为:A-B-D-E-G-H;

使用条件组合覆盖

执行路径为A-B-C-E-F-G-H ∧ A-B-C-E-G-H ∧ A-B-D-G-H ∧ A-B-D-E-G-H ∧ A-B-C-E-G-H。

  • 设整数个数为6个;整数为2,13,-16,1,2,18;应输出的结果为21.
  • 例子包括(1),(2),(3),(4),(5),(6)条件;路径为:A-B-C-E-F-G-H 或 A-B-C-E-G-H 或 A-B-D-G-H 或 A-B-D-E-G-H 或 A-B-C-E-G-H。

输出错误的情况

设整数个数为7个;整数为2,13,-16,1,2,18,1;应输出的结果为22,结果输出为21,输出错误,因为整数个数与数组长度不匹配。


心得体会

这一次通过阅读《百度百科》选择了第二种方法。写完程序后发现单元测试无法输入,并且输出直接就是0!但是直接测试的结果是正确的。后来发现我把输入和输出都写在主函数中,因此程序在进行单元测试时调用类的时候,主函数中的输入和输出没有被调用,导致没有输入值和输出,结果错误!这也让我更加深刻地了解了JAVA的JUnit的单元测试的原理,调用方法和测试方法。

程序代码coding地址

测试代码coding地址


One who wants to wear the crown, Bears the crown.

软件工程第三次作业(One who wants to wear the crown, Bears the crown.)的更多相关文章

  1. 软件工程第二次作业(One who wants to wear the crown, Bears the crown.)

    小镓自述Eclipse使用及自动单元测试技术 因为本人对JAVA有一些兴趣,所以就决定用Eclipse来完成这次作业,从安装Eclipse到学习写代码,最后学会用Junit来进行单元测试.这段过程给我 ...

  2. 248&258--高级软件工程第三次作业

    0 小组成员 马帅 / 2017202110248 齐爽爽 / 2017282110258 1 项目 GitHub 地址 GitHub:https://github.com/whumashuai/QT ...

  3. 高级软件工程第三次作业 赵坤&黄亦薇

    0.小组成员 赵坤2017282110261 黄亦薇201728210260 1.项目Github地址  https://github.com/zkself/homework3 PS:建议使用chro ...

  4. test软件工程第三次作业

    零.前言 本次作业要求个人编写程序,截止日期2019年9月25日23:00. 请先阅读<构建之法>第一章至第三章的内容,并在下方作业里体现出阅读后的成果.特别是第2章中的效能分析及个人软件 ...

  5. 软件工程第三次作业-结对作业NO.1

    第一次结对作业 结对人员: 潘伟靖 170320077 张 松 170320079 方案分析 我们对所供的资料进行分析,如下: 从提供的资料可以看出,需要解决的问题以及满足的需求主要有两类目标用户,各 ...

  6. 【软件工程第三次作业】结对编程:四则运算( Java 实现)

    1. GitHub 地址 本项目由 莫少政(3117004667).余泽端(3117004679)结对完成. 项目 GitHub 地址:https://github.com/Yuzeduan/Arit ...

  7. 软件工程(QLGY2015)第三次作业点评(含成绩)

    相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 团队信息 本页点评团队1-22,其他组见:http://www.cnblogs.com/xiaozhi_5638/p/4490764.h ...

  8. 软件工程(GZSD2015)第三次作业提交进度

    第三次作业题目请查看这里:软件工程(GZSD2015)第三次作业 开始进入第三次作业提交进度记录中,童鞋们,虚位以待哈... 2015年4月19号 徐镇.尚清丽,C语言 2015年4月21号 毛涛.徐 ...

  9. 软件工程(GZSD2015) 第三次作业提交进度

    第三次作业题目请查看这里:软件工程(GZSD2015)第三次作业 开始进入第三次作业提交进度记录中,童鞋们,虚位以待哈... 2015年4月19号 徐镇.尚清丽,C语言 2015年4月21号 毛涛.徐 ...

随机推荐

  1. Oracle EBS OPM 生产批创建事务处理

    --生产批创建事物处理 --created by jenrry DECLARE p_mmti_rec mtl_transactions_interface%ROWTYPE; p_mmli_tbl gm ...

  2. jQuery中使用attribute,prop获取,设置input的checked值【转】

    1.prop方法获取.设置checked属性 当input控件checkbox设置了checked属性时,无论checked=”“或 checked=”checked”,$(obj).prop(“ch ...

  3. MySQL索引设计不可忽视的知识点

    本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开. 一.MySQL——索引基础 首先,我们将从索引基础开始介绍一下什么 ...

  4. elasticsearch之JAVA环境变量报错:could not find java; set JAVA_HOME or ensure java is in PATH

    在以RPM包安装elasticsearch过程中出现报错JAVA环境的问题: ● elasticsearch.service - Elasticsearch Loaded: loaded (/usr/ ...

  5. 关于Vue的nextTick的一点小理解

    官方文档表示:为了在数据变化之后等待Vue完成更新DOM,可以在数据变化之后立即执行Vue.$nextTick(callback),这样回调函数就可以在数据变化之后立即执行. 这段话的意思是: 例如: ...

  6. 可以获取JVM信息的一些管理工具类

    一些可以获取JVM信息的java工具类 BufferPoolMXBean.class ClassLoadingMXBean.class CompilationMXBean.class GarbageC ...

  7. Dig命令解析结果

    dig -t RT NAME @NS -t RT 指定要查询的资源记录类型 NAME 需要解析的域(域名) @NS 指定那个域名服务器负责解析 [root@xss ~]# dig www.ihoney ...

  8. css 字体、文本、padding的样式

    一.字体的样式: 1)字体倾斜:font-style:italic 2)字体大小:font-size 一般为偶数. 3)行高:line-height   当行高为奇数的时候,是文字上面比文字下面的少一 ...

  9. css样式匹配苹果个型号手机

    /*适配苹果X*/ @media only screen and (device-width: 375px) and (device-height: 812px) and (-webkit-devic ...

  10. 关于MSCOCO_text数据集的探索

    最近需要做图片中文本识别的项目,然后为了快速验证模型,所以找到了mscoco-text数据集,网站1上是这么说的: 官网是这么说的: 然而,我下下来之后: 1 - 先导入: 2 - 其中key为'im ...