软件工程第三次作业

题目要求

题目背景##

给定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 编写源代码

利用VS编写源代码如下图所示:

2 程序流程图:

3 单元测试

覆盖方式如下:
(1)语句覆盖:使得程序中每个语句至少都能被执行一次。
(2)判定覆盖:使得程序中每个判定至少为T和F各一次。
(3)条件覆盖:使得判定中的每个条件获得各种可能的结果。
(4)判定/条件覆盖:同时满足判定覆盖和条件覆盖。
(5)条件组合覆盖:使得每个判定中条件的各种可能组合都至少出现一次
我选择的是判定条件覆盖
测试用例如下:
(1){10,10,3}
(2){-1,-2,-3,-4,-5}
(3){1,-2,3,-4,5,-6}
(4){-7, -8, -10, 11, 12,13}
测试代码如下图所示:

测试结果如下图所示:

测试完成,运行结果正确,判断条件全覆盖,结束测试,提交源代码,问题解决。

posted @ 2018-04-01 15:44  hd飞羽  阅读(181)  评论(0编辑  收藏  举报