软件工程第三次作业
最大连续子数组和
一、作业题目描述
最大连续子数组和: 给定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));
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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训练数据并当服务器共享给他人