【HDOJ】1003 Max Sum

最开始使用递归DP解,stack overflow。化简了一些,复杂度为O(n)就过了。

#include <stdio.h>

int main() {

    int case_n, n;
    int i, j, tmp;
    int beg, end, sum, max_sum;
    int number;

    scanf("%d", &case_n);

    for (i=1; i<=case_n; i++) {
        scanf("%d", &n);

        beg = 0;
        tmp = 0;
        end = 0;
        sum = 0;
        max_sum = -1001;
        for (j=0; j<n; j++) {
            scanf("%d", &number);

            sum += number;
            if (sum > max_sum) {
                max_sum = sum;
                beg = tmp;
                end = j;
            }
            if (sum < 0) {
                sum = 0;
                tmp = j+1;
            }
        }

        printf("Case %d:
", i);
        printf("%d %d %d
", max_sum, beg+1, end+1);

        if (i != case_n)
            printf("
");
    }

    return 0;
}
原文地址:https://www.cnblogs.com/bombe1013/p/3571456.html