/*
最大子段和问题:
对于一个序列: -6,9,8,-10,100,-99
其中:最大子段和为:100
子段长度为:10
*/
#include <stdio.h>
#include <stdlib.h>
#define MAX 101
int main(void)
{
int i,j,k,n,max=0,sum=0;
int sj=0 , sk = 0,st=0 ;
int a[MAX]={0} ;
scanf("%d",&n);
for(i=1 ; i<= n ; i++)
scanf("%d",&a[i]);
for(i=1,sj=1; i<= n; i++)
{
if (sum >= 0)
sum += a[i] ;
else
{
sum = a[i];
sj = i ;
}
if(sum > max)
{
max = sum ;
st= sj ;
sk = i ;
}
}
printf("max = %d ",max); /*输出最优值*/
printf("The result is : "); /*输出最优解*/
for(i=st ; i<= sk ; i++)
printf("%d ",a[i]);
printf(" ");
system("pause");
return 0;
}