0
点赞
收藏
分享

微信扫一扫

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


举报

相关推荐

0 条评论