HDU3421 Max Sum II【序列处理】

来源:互联网 发布:出租车打车软件 编辑:程序博客网 时间:2024/06/05 06:40

问题链接:HDU3421 Max Sum II。

问题简述:整数序列分为几个子段,其各个子段和为最大

问题分析需要考虑0的情况,可能是单独的一个子段,也可能是一个子段中的一个元素。

程序说明:常规的处理,因为需要排除负数并且计数子段的数量,所有使用变量flag。

题记(略)


AC的C++语言程序如下:

/* HDU3421 Max Sum II */#include <iostream>#include <stdio.h>using namespace std;int main(){    int t, n, a;    scanf("%d", &t);    for(int i=1; i<=t; i++) {        int sum = 0, cnt = 0;        bool flag = true;        scanf("%d", &n);        for(int j=1; j<=n; j++) {            scanf("%d", &a);            if(a > 0) {                sum += a;                if(flag)                    cnt++, flag = false;            } else if(a < 0)                flag = true;        }        if(i != 1)            printf("\n");        printf("Case %d:\n", i);        if(sum == 0)            printf("0 0\n");        else            printf("%d %d\n", cnt, sum);    }    return 0;}


原创粉丝点击