题库 信息学奥赛题库 题目列表 NOIP2009年普及组完善程序题:(最大连续子段和)给出...
填空题

NOIP2009年普及组完善程序题:(最大连续子段和)给出一个数列(元素个数不多于100),数列元素均为负整数、正整数、0。请找出数列中的一个连续子数列,使得这个子数列中包含的所有元素之和最大,在和最大的前提下还要求该子数列包含的元素个数最多,并输出这个最大和以及该连续子数列中元素的个数。例如数列为4,-5,3,2,4时,输出9和3;数列为1 2 3 -5 0 7 8时,输出16和7。

#include <iostream>
usingnamespacestd;
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 = [    ①    ];
    for (i = 1; i <= n; i++) {
        if (tmp + a[i] > ans) {
            ans = tmp + a[i];
            len = i - beg;
        } elseif ( [       ②        ] &&i - beg > len)
        len = i - beg;
        if (tmp + a[i] [   ③   ]  ){
            beg =   [  ④    ];
            tmp = 0;
        }
        else
        [       ⑤        ];
    }
    cout << ans << " " << len << endl;
    return0;
}
题目信息
完善程序 2009年 初赛
-
正确率
0
评论
144
点击