There is a
sequence A1, A2, ..., AN. You can only select a successive part. Then what is
the greatest sum of the select part.
输入:
Line 1: A integer N (1 ≤ N ≤ 106)), the length of sequence
Line 2: N integers A1, A2, ..., AN (-100<=Ai<=100), the sequence.
输出:
An integer, the greatest sum.
Sampl Input
10
-1 8 -1 8 -3 2 -4 4 -7 6
Sample Output
15
#include <stdio.h>
void main()
{
int n,sum,ksum,max,flag=0,k;
scanf("%d",&n);
scanf("%d",&k);
max=k;
sum=k;
if(k>0)
{
flag=1;
ksum=k;
}
while(--n)
{
scanf("%d",&k);
max=max>k?max:k;
if(flag)
{
ksum=ksum+k;
max=max>ksum?max:ksum;
}
if(k>0)
{
if(sum<0)
sum=k;
else
{
sum=sum+k;
max=max>sum?max:sum;
}
if(!flag)
{
ksum=k;
flag=1;
}
}
else
sum=k;
}
printf("%d\n",max);
}
有没有谁能测出错误的结果~
输入:
Line 1: A integer N (1 ≤ N ≤ 106)), the length of sequence
Line 2: N integers A1, A2, ..., AN (-100<=Ai<=100), the sequence.
输出:
An integer, the greatest sum.
Sampl Input
10
-1 8 -1 8 -3 2 -4 4 -7 6
Sample Output
15
#include <stdio.h>
void main()
{
int n,sum,ksum,max,flag=0,k;
scanf("%d",&n);
scanf("%d",&k);
max=k;
sum=k;
if(k>0)
{
flag=1;
ksum=k;
}
while(--n)
{
scanf("%d",&k);
max=max>k?max:k;
if(flag)
{
ksum=ksum+k;
max=max>ksum?max:ksum;
}
if(k>0)
{
if(sum<0)
sum=k;
else
{
sum=sum+k;
max=max>sum?max:sum;
}
if(!flag)
{
ksum=k;
flag=1;
}
}
else
sum=k;
}
printf("%d\n",max);
}
有没有谁能测出错误的结果~