- 最大子段和
给定由n个整数(可能有负整数)组成的序列(a1,a2,…,an),最大子段和问题要求该序列形如 的最大值(1<=i<=j<=n),当序列中所有整数均为负整数时,其最大子段和为0。
#include<stdio.h>
#include<string.h>
#define N 100
int MaxSum(int n,int a[])
{
int sum=0,b=0;
for(int i=0;i<n;i++){
if(b>0)
b+=a[i];
else
b=a[i];
if(b>sum)
sum=b;
}
if(sum<0)
return 0;
else
return sum;
}
void main()
{
int a[N],len,i;
printf("需要输入多少个数字?\n");
scanf("%d",&len);
printf("开始输入你需要输入的数字:\n");
for(i=0;i<len;i++){
scanf("%d",&a[i]);
}
printf("\n最大子段和为:%d\n",MaxSum(len,a));
}