问题描述
题目(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。
运行代码
这个代码嵌套了三层循环来找最大子数和,虽然执行效率不是那么高,但是对于来说是思路相对比较清晰的一种算法,输入用的也是循环输入。计算最大子数和部分用的是一个函数。
完整代码[最大子数和](https://coding.net/u/wu5945729/p/zishuhe/git/blob/master/01?public=true)
单元测试
感觉这是第一次真正的写单元测试,还是有点困难的,首先并不知道怎么写单元测试的代码,然后看了其他同学是怎么写的,才一点点有了思路,但是总是会有一些问题,我最大的问题就是我缺少了头文件Assert,因为一开始也并不明白Assert这个函数的作用,但是现在懂了。
1.流程图
2.条件覆盖
有三组测试代码
a[3]={4,5,6}最大子数和为15; 本组都是正数
a[4]={-1,5,-6,9}最大子数和为9; 本组既有正数又有负数
a[5]={-1,-3,-5,-2,-4}根据题意最大子数和为0;本组全为负数
3.测试单元代码
这部分是我花了大把时间的测试代码
单元测试成功
总结
这次作业收获很多,代码部分因为大一时候做的就是类似差不多的题,所以感觉就还好,但是测试单元部分真的是难倒我了,因为之前真的没有接触过,一开始什么都不知道,然后通过查了一些资料和参考同学些的之后才大概明白了什么意思,但是总是错在一些细节上面,就很无奈。但是最重要的是最后我测试成功了,怎么说我也是涨了见识了。花了一天的时间也不是很亏。