![]() |
#2
wmf20142015-10-23 23:29
|
原题
只有本站会员才能查看附件,请 登录

#include<stdio.h>
int Compare(int CurArraySum,int MaxArraySum)
{
if( CurArraySum > MaxArraySum )
MaxArraySum=CurArraySum;
return MaxArraySum;
}
int main()
{
int Array[100000];
int CurArraySum,MaxArraySum;
int k,i;
int book; //记录Array[]中负数的个数
book=0;
CurArraySum=0;
MaxArraySum=-9999999;
scanf("%d",&k);
for(i=0;i<k;i++)
{
scanf("%d",&Array[i]);
}
//在线处理,扫描下一个数与最大和比较,当前和为负数则不将当前和记录至下一个数,重置后扫描
for(i=0;i<k;i++)
{
if(Array[i]<0) book++;
if( CurArraySum<0 )
{
CurArraySum=0;
CurArraySum+=Array[i];//重新扫描
MaxArraySum = Compare( CurArraySum , MaxArraySum );
}
else
{
CurArraySum+=Array[i];//虽然第一项为负数时会将其包含进CurArraySum,但是后会被重置为0,即使只有一项由于book的记录也会输出0
MaxArraySum = Compare( CurArraySum , MaxArraySum );
}
}
if(book==k)
printf("0\n");
else
printf("%d\n",MaxArraySum);
return 0;
}
int Compare(int CurArraySum,int MaxArraySum)
{
if( CurArraySum > MaxArraySum )
MaxArraySum=CurArraySum;
return MaxArraySum;
}
int main()
{
int Array[100000];
int CurArraySum,MaxArraySum;
int k,i;
int book; //记录Array[]中负数的个数
book=0;
CurArraySum=0;
MaxArraySum=-9999999;
scanf("%d",&k);
for(i=0;i<k;i++)
{
scanf("%d",&Array[i]);
}
//在线处理,扫描下一个数与最大和比较,当前和为负数则不将当前和记录至下一个数,重置后扫描
for(i=0;i<k;i++)
{
if(Array[i]<0) book++;
if( CurArraySum<0 )
{
CurArraySum=0;
CurArraySum+=Array[i];//重新扫描
MaxArraySum = Compare( CurArraySum , MaxArraySum );
}
else
{
CurArraySum+=Array[i];//虽然第一项为负数时会将其包含进CurArraySum,但是后会被重置为0,即使只有一项由于book的记录也会输出0
MaxArraySum = Compare( CurArraySum , MaxArraySum );
}
}
if(book==k)
printf("0\n");
else
printf("%d\n",MaxArraySum);
return 0;
}