问题 3862 --最大连续子段和(完善程序)

3862: 最大连续子段和(完善程序)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 208  解决: 126
[提交][状态][命题人:]

题目描述

给出一个数列(元素个数不多于100),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,

使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子序列包含的元素个数最多,并输出

这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列为1 2 3 -5 0 7 8时,输出16和7。

#include <iostream>
using namespace std;
int a[101];
int n,i,ans,len,tmp,beg;
int main()
{
	cin>>n;
	for(i=1;i<=n;i++)
	cin>>a[i];
	tmp=0;
	ans=0;
	len=0;
	beg=______(1)______;
	for(i=1;i<=n;i++)
	{
		if(tmp+a[i]>ans)
		{
			ans=tmp+a[i];
			len=i-beg;
		}
		else if(______(2)______&&i-beg>len)
		{
			len=i-beg;
		}
		if(tmp+a[i]______(3)_____)
		{
			beg=_____(4)______;
			tmp=0;
		}
		else
		   ______(5)______;
	}
    cout<<ans<<" "<<len<<endl;
}


输入

输出

样例输入
Copy
7
1 2 3 -5 0 7 8
样例输出
Copy
16 7

提示

来源

[提交][状态]