HDU 1003 MAX SUM (基础题)

来源:互联网 发布:网页游戏发布站源码 编辑:程序博客网 时间:2024/06/04 18:57

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003

因为数据结构书上第一个算法分析实例就是这个题,也没怎么仔细看就直接写了,结果老WR,结果才发现书上的只针对Maxsum为正数的时候才适用,负数的时候书上为0,主要题目貌似也没怎么交代清楚,一个不加算不算子序列。不过AC以后才知道不算。

解题代码如下:

#include <stdio.h>int Kesha[100005];int main() {    int t, k = 0;    scanf("%d", &t);    while(t--) {        k++;        int n, p = 0;        scanf("%d", &n);        for(int i=0; i<n; i++) {            scanf("%d", &Kesha[i]);        }        int sum = Kesha[0], max = Kesha[0];        int begin = 0, end = 0;        for(int i=1; i<n; i++) {            if(sum + Kesha[i] < Kesha[i]) {                sum = Kesha[i];                p = i;            }else {                sum = sum + Kesha[i];            }            if(sum > max) {                max = sum;                begin = p;                end = i;            }        }        printf("Case %d:\n%d %d %d\n", k, max, begin+1, end+1);        if(t)  printf("\n");    }    return 0;}

0 0
原创粉丝点击