hdu 1003

3 0 1 1 

这组数据的答案是 2 2 3

而不是 2 1 3

所以代码中注释部分存在问题

// hdu 1003

// water

// Feb.16 2015

#include <cstdio>



int T, n, a, m, sum, temp_begin, begin, end, CaseNum = 0;



int main(int argc, char const *argv[])

{

    // freopen("in", "r", stdin);

    scanf("%d", &T);

    while(T--){

        scanf("%d", &n);

        m = -11111111;

        sum = 0;

        temp_begin = begin = end = 1;

        for(int i = 1; i <= n; ++i){

            scanf("%d", &a);

            if(sum <= 0){

                sum = a;

                temp_begin = i;

            }

            else

                sum += a;



            if(sum > m){

                m = sum;

                begin = temp_begin;

                end = i;

            }

        }



        /*

        for(int i = 1; i <= n; ++i){

            scanf("%d", &a);

            sum += a;

            if(sum >= m){

                m = sum;

                begin = temp_begin;

                end = i;

            }

            else if(sum < 0){

                sum = 0;

                temp_begin = i + 1;

            }

        }

        */

        printf("Case %d:\n%d %d %d\n", ++CaseNum, m, begin, end);

        if(T)

            printf("\n");

    }

    return 0;

}

 

你可能感兴趣的:(HDU)