软件工程第三次作业(One who wants to wear the crown, Bears the crown.)
最大连续子数组和
题目
给定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. 循环结束输出结果。
流程图

单元测试
程序的白盒测试有五种覆盖标准:语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖 ,条件组合覆盖。
使用的方法为判定/条件覆盖和条件组合覆盖
覆盖标准:使得判定中的每个条件获得各种可能的结果。假设数组长度为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的单元测试的原理,调用方法和测试方法。


One who wants to wear the crown, Bears the crown.
软件工程第三次作业(One who wants to wear the crown, Bears the crown.)的更多相关文章
- 软件工程第二次作业(One who wants to wear the crown, Bears the crown.)
小镓自述Eclipse使用及自动单元测试技术 因为本人对JAVA有一些兴趣,所以就决定用Eclipse来完成这次作业,从安装Eclipse到学习写代码,最后学会用Junit来进行单元测试.这段过程给我 ...
- 248&258--高级软件工程第三次作业
0 小组成员 马帅 / 2017202110248 齐爽爽 / 2017282110258 1 项目 GitHub 地址 GitHub:https://github.com/whumashuai/QT ...
- 高级软件工程第三次作业 赵坤&黄亦薇
0.小组成员 赵坤2017282110261 黄亦薇201728210260 1.项目Github地址 https://github.com/zkself/homework3 PS:建议使用chro ...
- test软件工程第三次作业
零.前言 本次作业要求个人编写程序,截止日期2019年9月25日23:00. 请先阅读<构建之法>第一章至第三章的内容,并在下方作业里体现出阅读后的成果.特别是第2章中的效能分析及个人软件 ...
- 软件工程第三次作业-结对作业NO.1
第一次结对作业 结对人员: 潘伟靖 170320077 张 松 170320079 方案分析 我们对所供的资料进行分析,如下: 从提供的资料可以看出,需要解决的问题以及满足的需求主要有两类目标用户,各 ...
- 【软件工程第三次作业】结对编程:四则运算( Java 实现)
1. GitHub 地址 本项目由 莫少政(3117004667).余泽端(3117004679)结对完成. 项目 GitHub 地址:https://github.com/Yuzeduan/Arit ...
- 软件工程(QLGY2015)第三次作业点评(含成绩)
相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 团队信息 本页点评团队1-22,其他组见:http://www.cnblogs.com/xiaozhi_5638/p/4490764.h ...
- 软件工程(GZSD2015)第三次作业提交进度
第三次作业题目请查看这里:软件工程(GZSD2015)第三次作业 开始进入第三次作业提交进度记录中,童鞋们,虚位以待哈... 2015年4月19号 徐镇.尚清丽,C语言 2015年4月21号 毛涛.徐 ...
- 软件工程(GZSD2015) 第三次作业提交进度
第三次作业题目请查看这里:软件工程(GZSD2015)第三次作业 开始进入第三次作业提交进度记录中,童鞋们,虚位以待哈... 2015年4月19号 徐镇.尚清丽,C语言 2015年4月21号 毛涛.徐 ...
随机推荐
- 第二次项目冲刺(Beta版本)2017/12/10
一.任务分布 二.燃尽图 三.站立式会议 1.照片(再给我两分钟) 2.任务安排 四.总结 冲刺的最后一天了,时间安排的不够好,还有部分功能没有完成,大家都尽力了,我们后续会抓紧时间完成项目.
- 详解Web请求中的DNS域名解析
当我们打开浏览器,输入一个URL去请求我们需要的资源,但是URL是需要解析成对应的IP地址才能与远程主机建立连接,如何将URL解析成IP就是DNS的工作范畴,即使作为开发人员,这个过程我们也感觉不到, ...
- BZOJ4919:[Lydsy1706月赛]大根堆(set启发式合并)
Description 给定一棵n个节点的有根树,编号依次为1到n,其中1号点为根节点.每个点有一个权值v_i. 你需要将这棵树转化成一个大根堆.确切地说,你需要选择尽可能多的节点,满足大根堆的性质: ...
- 将"a"标签当bunton使用
<a href="javascript:void(0);" style="color: red" onclick="del_product_in ...
- Kubernetes1.91(K8s)安装部署过程(五)--安装flannel网络插件
node节点需要安装flannel网络插件才能保证所有的pod在一个局域网内通信,直接使用yum安装即可,版本是0.7.1. 1.安装flannel插件: 注意是2个node节点都需要安装,都需要修改 ...
- OpenCV——重映射、仿射变换
#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...
- leetcode338—Counting Bits
Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the ...
- C++的命名空间的使用
C++语言引入命名空间(Namespace)这一概念主要是为了避免命名冲突,其关键字为 namespace. 科技发展到如今,一个系统通常都不会仅由一个人来开发完成,不同的人开发同一个系统,不可避免地 ...
- loadrunner中pacing设置01
之前一直也用pacing值来调节TPS,一直觉得它和think time没啥区别.这次项目中,和同事就此展开了讨论,细细一研究发现pacing值门道还是很多的. 如下面三个图: 上图是pacing的三 ...
- eclipse中查看安装的所有插件,并选择性的将其卸载
牢骚:前一段时间安装了一个将错误日志回传到邮箱的eclipse插件,安装此插件对捕获debug虽然很方便,但是也带了我不小的困扰,比如:eclipse加载速度慢.打开速度慢,有时还会引起一些异常,这不 ...