标签:
6 1 -2 3 5 -1 2 5 6 -1 5 4 -7
10 14
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[100010];
int main()
{
int m;
while(~ scanf("%d",&m))
{
memset(a,0,sizeof(a));
int s=0,sum=0,i,sum1=0,s1=0,t=0,ax=0,in=0;
for(i=1; i<=m; i++)
{
scanf("%d",&a[i]);
t+=a[i];
}
for(i=1; i<=m; i++)
{
s+=a[i]; //求出原数组中的最大连续和
if(s>sum)
sum=s;
if(s<0)
s=0;
s1+=a[i]; //求出原数组中最小连续喝
if(s1<sum)
sum=s1;
if(s1>0)
s1=0;
ax=max(s,ax); //取原数组中最大
in=min(s1,in); //取原数组中最小
}
ax=max(ax,t-in); //比较那个大
printf("%d\n",max(ax,0));
}
return 0;
}标签:
原文地址:http://blog.csdn.net/zar123456/article/details/51355168