最大连续子数组和

题目

给定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. TSQL使用ADHOC访问Excle文件

    如题,今天正好碰到这个问题,现将相关知识点记录如下: --开启高级配置功能 reconfigure --开启导入功能 reconfigure --允许在进程中使用ACE.OLEDB.12 --允许使用 ...

  2. SQLSERVER 分区表实战

    背景:对NEWISS数据库创建分区表T_SALES的SQL.按照日期来进行分区步骤:1:创建文件组2:创建数据文件3:创建分区函数4:创建分区方案5:创建表及聚集索引6:导入测试数据(此处略),并查询 ...

  3. 解决Elasticsearch问题的一些心得体会

    在开始前先来介绍下背景:我的日志采集系统采用ELK(logstash(收集).elasticsearch(存储+搜索).kibana(展示)三个软件的简称)开源架构,在elasticsearch搭建了 ...

  4. SDN第4次上机作业

    作业链接 1.建立以下拓扑,并连接上ODL控制器. ODL拓扑界面截图: 安装odl参考链接 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 验证性连通性截图: 将hard ...

  5. GoldenGate配置(三)之DDL复制配置

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/huangyanlong/article/details/33430293 GoldenGate配置( ...

  6. 记录一次elasticsearch-php工作过程

    初始化 $hosts = array('192.168.30.41'); $this->client = \Elasticsearch\ClientBuilder::create()->s ...

  7. 关于JRebel启动tomcat访问上次工程的index.jsp

    检查了一下,原来我把上次配置文件包括JRebel配置文件一起复制过来,用JRebel启动时tomcat访问JRebel配置文件的目录下 这个是我上次文件的路径,把JRebel配置文件删除了,然后 di ...

  8. 【Git123】Git

    https://www.cnblogs.com/jager/p/6684637.html 四.git工作原理 这边文章介绍的不错 Git from the Bottom Up 六.git常用命令 wo ...

  9. Ubuntu18.04安装Teamviewer

    首先,打开TeamViewer的下载页面,下载Debian/Ubuntu的Deb安装包. 这里有64位和32位安装包选项.可以在Terminal(终端)中输入uname -a 查看自己系统版本是64位 ...

  10. logistic回归梯度上升优化算法

    # Author Qian Chenglong from numpy import * from numpy.ma import arange def loadDataSet(): dataMat = ...