软件工程第三次作业
题目要求
题目背景##
给定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}
测试代码如下图所示:
测试结果如下图所示:
测试完成,运行结果正确,判断条件全覆盖,结束测试,提交源代码,问题解决。