软件工程第三次作业

最大连续子数组和

一、作业题目描述

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

二、实际代码

题目实际代码如下所示:

package qiumax;
public class Max {
	public static void main(String[] args)
	{
		int [] arr= new int[4];
		int maxsum=getmax(arr);
		System.out.println(maxsum);
		
	}
	public static int getmax(int[] arr)
	{
		if(arr.length==0)
		{
			return 0;
		}
		int sum=0;
		int maxsum=0;
		for(int i=0;i<arr.length;i++)
		{
			sum=sum+arr[i];
			if(sum<0)
			{
				sum=0;
			}
			if(sum>maxsum)
			{
				maxsum=sum;
			}
		}
		return maxsum; 
	}
}

可运行代码地址GitHub

三、单元测试

1.选择方式

条件组合覆盖

2.流程图

3.判断分析

要求每个判定条件都出现其中共有四个条件
(1)判断长度:arr.length=0或arr.length>0
(2)判断i的值:i>=arr.length或arr.length
(3)判断sum的值:sum>=0或sum<0
(4)判断maxsum的值:maxsum>sum或maxsum<sum

4.条件组合覆盖方式的可能组合

1.arr.length=0;
2.arr.length>0,sum>0,maxsum>sum
3.arr.length>0,sum>0,maxsum<sum
4.arr.length>0,sum<0,maxsum>sum

5.测试数据

1.{}
2.{-2,3,-1,6}

6.测试代码

测试代码如下:

class MaxTest {
	int[] arr= {-2,3,-1,6};
	@Test
	void testGetmax() {
		assertEquals(8,new Max().getmax(arr));
	}

}

7.测试结果

posted @   zqy123  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示