C++代码
  1. /*  
  2. Title: 最大连续子序列  
  3. Problem URL: http://acm.hdu.edu.cn/showproblem.php?pid=1231  
  4. Author: Moqi  
  5. Date: 2008-03-19  
  6. Description:505951 2008-03-19 22:42:40 Accepted 1231 203MS 0K 857B C moqi   
  7. */  
  8. #include <stdio.h>   
  9. int main()   
  10. {   
  11.     int i, k, n, max, sumk, flag;   
  12.     int s[10001], sum[10001], a[10001];   
  13.     while (scanf ("%d", &n))   
  14.     {   
  15.         flag = 0;   
  16.         if (n == 0)   
  17.             break;   
  18.         sumk = k = max = 0;   
  19.         for (i = 0; i < n; i++)   
  20.         {   
  21.             scanf("%d", &s[i]);   
  22.             if (s[i] >= 0)   
  23.                 flag = 1;   
  24.             if (sumk >= 0)   
  25.             {   
  26.                 sumk += s[i];   
  27.                 a[i] = k;   
  28.             }   
  29.             else  
  30.             {   
  31.                 sumk = s[i];   
  32.                 a[i] = k = i;   
  33.             }   
  34.             sum[i] = sumk;   
  35.             if (sumk > max)   
  36.                 max = sumk;   
  37.         }   
  38.         if (flag == 0)   
  39.             printf("%d %d %d\n", 0, s[0], s[n-1]);   
  40.         else  
  41.         {   
  42.             k = 0;   
  43.             for (i = 1; i < n; i++)   
  44.             {   
  45.                 if (sum[i] > sum[k])   
  46.                     k = i;   
  47.             }   
  48.             printf("%d %d %d\n", sum[k], s[a[k]], s[k]);   
  49.         }   
  50.     }   
  51.     return 0;   
  52. }