实现最大子段和
1.题目描述
题目:最大连续子数组和(最大子段和)
问题: 给定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。
-- 引用自《百度百科》
2.算法分析
实现最大子段和有多种方法,其中包括枚举法,
分治法,在线算法,联机算法等方法。本次我选用枚举法。
本次使用c++辅助生成代码,用Eclipse实现代码的编写以及测试。
3.算法的生成
1.求和代码
2.测试代码
3.运行结果
3.覆盖测试
1.覆盖方法
(1)语句覆盖:所有语句被执行一次。
(2)判定覆盖:每个判定都要取所有的可能。
(3)条件覆盖:判断每个条件的所有可能至少满足一次。
(4)判定条件覆盖:同时满足判断覆盖和条件覆盖。
(5)条件组合覆盖:所有组合情况都要覆盖一次。
2.本次所选覆盖测试方法
本次所选覆盖测试方法为条件组合覆盖。
3.条件组合覆盖及其路径
(1)流程图
(2)条件组合覆盖及其路径
(3)测试用例
1.{-1,3,4,-2}
2.{-2,-4,-8,-1}
3.{-3,2,1,-6}