欢迎来到Checker的博客

软件工程第二次作业

一、题目:最大连续子数组和(最大子段和)

问题: 给定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。

二、算法思想-动态规划算法

运用动态规划的思想来解决最大子段和问题:通过遍历累加这个数组元素,实时更新最大子段和,如果当前累加数为负数,直接舍弃,重置为a[i],然后接着遍历;

时间复杂度:O(n)

三、程序代码

请单击我,我是work2.c!

四、运行结果



四、单元测试——条件组合覆盖

1.测试代码
我在这儿!
2.流程图

3.选择条件组合覆盖测试,测试情况为
情况A:当前子段和curr_max > 0&&当前子段和 curr_max > 最大子段和 max_so_far
情况B:当前子段和curr_max > 0&&当前子段和 curr_max <= 最大子段和max_so_far
情况C:当前子段和 curr_max <= 0&&当前子段和curr_max> 最大子段和 max_so_far
情况D:当前子段和curr_max<= 0&&当前子段和curr_max<= 最大子段和 max_so_far
4.测试用例
(1)单元测试用例一:array[5] = { 1, 2, 3, 4, 5 } 最大子段和为15
其中包含情况 A
(2)单元测试用例二:array[5] = { -1,2, -1, 1, -2} 最大子段和为2
其中包含情况 B
(3)单元测试用例三:array[5] = { 5, -1, -3, 4, -2, 2 } 最大子段和为5
其中包含情况 C
(4)单元测试用例四:array[5] = { -1, -2, -3, -4, -5 } 最大子段和为0
其中包含情况 D
此四组测试用例完全符合组合覆盖的要求,因此,单元测试样例达到组合覆盖的目的。
5.自动测试分析结果图

五、总结

通过本次作业,初步了解了覆盖测试,在查找资料和反复调试,初步了解了vs中的单元测试。同时也更加了解写博客时的Markdown对图片的处理,每次作业中都会有所收获。

posted @ 2024-04-04 19:03  Checkerr  阅读(43)  评论(0)    收藏  举报