首页 > 试题广场 >

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

[填空题]
(最大连续子段和)给出一个数列(元素个数不多于 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,end;
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;
    return 0;
} 

这道题你会答吗?花几分钟告诉大家答案吧!