poj2479Maximum sum

刚刚开始一直错 一直错  原来是i+1已经大于n了。。。本以为是0没关系的,看来不能想当然
#include <stdio.h>
#include<limits.h> 
#include <string.h>
int main()
{
	int i,t,n,maxsum,sum;
	int a[50005],arr1[50005],arr2[50005];
	scanf("%d",&t);
	while(t--)
	{
		memset(arr1,0,sizeof(arr1));
		memset(arr2,0,sizeof(arr2));
		memset(a,0,sizeof(a));
		scanf("%d",&n);
		sum=0,maxsum=INT_MIN;
		for(i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
			sum+=a[i];
			if(sum>maxsum)
				maxsum=sum;
			if(sum<0)
				sum=0;
			arr1[i]=maxsum;
		}
		sum=0,maxsum=INT_MIN;
		for(i=n-1;i>=0;i--)
		{
			sum+=a[i];
			if(sum>maxsum)
				maxsum=sum;
			if(sum<0)
				sum=0;
			arr2[i]=maxsum;
		}
		maxsum=INT_MIN;
		for(i=0;i<n-1;i++)//就错这里了,应该i<n-1,不是i<n
			if(arr1[i]+arr2[i+1]>maxsum)
				maxsum=arr1[i]+arr2[i+1];
		printf("%d\n",maxsum);
	}
	return 0;
}

你可能感兴趣的:(c,SUM,poj,maximum,poj2479)