HDU 1003 MAX SUM (基础题)

链接: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; }

你可能感兴趣的:(数据结构,基础题,基础算法)