标签:
6 -2 11 -4 13 -5 -2 10 -10 1 2 3 4 -5 -23 3 7 -21 6 5 -8 3 2 5 0 1 10 3 -1 -5 -2 3 -1 0 -2 0
20 11 13 10 1 4 10 3 5 10 10 10 0 -1 -2 0 0 0Huge input, scanf is recommended.HintHint
最大连续子序列问题,做来做去都是哪种方法。。
很简单的题, 就不用注释了。
#include <stdio.h>
#define num 10000+5
int main()
{
int n,t,i,j,flag,a[num],star,q,g;
long sum,maxsum;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
for(j=0;j<n;j++)
scanf("%d",&a[j]);
maxsum=a[0];
sum=0;
q=flag=0;
j=star=0;
for(q=0;q<n;q++)
{
if(sum<0)
sum=a[q],j=q;
else
sum=sum+a[q];
if(sum>maxsum)
{
maxsum=sum;
flag=q;
star=j;
}
}
if(maxsum>=0)
printf("%ld %d %d\n",maxsum,a[star],a[flag]);
else
printf("0 %d %d\n",a[0],a[n-1]);
}
return 0;
}版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/su20145104009/article/details/47009191