软件工程作业




**题目要求 **

最大连续子数组和(最大子段和)
问题: 给定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。


设计测试用例

  • 代码
public int MaxSubArray(int a[],int n)  
	{  
	    int sum = 0,max = a[0];
	    for(int i = 0;i < n;i++)
	    {  
	        if(sum < 0)
	        	sum = a[i];
	        else
	        	sum += a[i];
	        if(sum > max)
	        	max = sum;
	    }  
	    return max;  
	}  
  • 流程图
    avatar

  • 条件组合覆盖

    测试数组:a[] = {2,1,-5,-3,7}

    i 判断语句① 判断语句② 路径
    0 N N BDE
    1 N Y BCE
    2 N N BDE
    3 Y N ADE
    4 Y Y ACE

**利用自动测试工具对程序进行测试 **

  • 测试结果

avatar




੯ੑ∙ʔ 354449459454.354449449 369444424379.424449449
原文地址:https://www.cnblogs.com/rxxtn/p/8688945.html