(最大连续子段和)给出一个数列(元素个数不多于 100

(最大连续子段和)给出一个数列(元素个数不多于 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;
int main(){
	scanf("%d",&n);
	for (i=1;i<=n;i++) 
	scanf("%d",&a[i]);
	tmp=0;
	ans=0;
	len=0;
	beg= ① ;
	for (i=1;i<=n;i++)
	{
	if (tmp+a[i]>ans)
	{
		ans=tmp+a[i];
		len=i-beg;
	}
	else if ( ②&&i-beg>len)
		len=i-beg;
	if (tmp+a[i] ③ )
	{
		beg= ④ ;
		tmp=0;
	}
	else
		⑤ ;
	}
printf("%d %d\n",ans,len);
return 0;
}


答案
第1空:0
第2空:tmp+a[i]==ans
第3空:<0
第4空:i
第5空:tmp=tmp+a[i]

题目信息

题号:6533
题型:填空题
难度:普通