给出一个数列(元素个数不多于100),数列元素均为负整数、0、正整数。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列1 2 3 -5 0 7 8时,输出16和7.
#include<stdio.h>
int a[101];
int n,i ,ans,len,tmp,beg,end;
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
tmp=0;
ans=0;
len=0;
beg=0;
for(i=1;i<=n;i++)
{
if(tmp+a[i]>ans)
{
ans=tmp+a[i];
len=i-beg;
}
else if(tmp+a[i]==ans&&i-beg>len)
len=i-beg;
if(tmp+a[i]<0)
{
beg=i;
tmp=0;
}
else
tmp=tmp+a[i];
}
printf("%d %d/n",ans,len);
system("pause");
return 0;
}