hdu 1003 Max Sum

求最大子序列问题,有很多种方法,这里先实现一种,注意:

1、以负数开始的情况

#include<stdio.h>

int T,N, i, j=1;
int sum_temp, sum_max;

int main()
{
    int start, start_new, start_old, temp, end;
    scanf("%d",&T);
    while(T --)
    {
        scanf("%d",&N);
        start=0, end=0, start_new=0,sum_temp=0,sum_max=-100000000;
        for(i = 0; i < N; i ++)
        {
            scanf("%d", &temp);
            sum_temp += temp;
            if(sum_temp < 0)
            {
                start_old = start_new;
                start_new = i+1;
            }
            if(sum_temp > sum_max)
            {
                if(sum_temp > 0)
                    start = start_new;
                else
                    start = start_old;
                sum_max = sum_temp;
                end = i;
            }
            if(sum_temp < 0)
            {
                sum_temp =0;
            }
        }
        printf("Case %d:
",j);
        printf("%d %d %d
",sum_max, start+1, end+1);
        if(T>0) printf("
");
        j ++;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/yuzhaoxin/p/6709169.html