作业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;
}