HDU 1003 MAX SUM (基础题)

2014-11-24 07:13:19 · 作者: · 浏览: 0

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

解题代码如下:

#include 
  

    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:
%d %d %d

   , k
   , max
   , begin
   +1
   , end
   +1
   ); if(t
   )  printf
   (

   ); } return 0
   ; }