作业3

题目要求

给定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。

程序设计

源文件

include"pch.h"

include

using namespace std;

int Max(int*s, int n)
{
int i,sum=0,max=0;
for (i=0;i<n;i++)
{
sum=sum+arr[i];
if(sum<0)
{sum=0;}
if(sum>max)
{max=sum}
}
return max;
}
int main()
{
int i,n,s[10];
cin >> n;
for(i=0;i<n;i++)
{cin >> s[n];}
count << Max(s,n) << endl:
}

头文件

int Max(int s[], int n)
{
int i,sum=0,max=0;
for (i=0;i<n;i++)
{
sum=sum+s[i];
if(sum<0)
{sum=0;}
if(sum>max)
{max=sum;}
}
return max;
}

流程图

作业3

单元测试

测试代码

作业3

测试结果

作业3