版本1和2间的区别
于2008-06-01 14:14:09修订的的版本1
大小: 960
编辑: czk
备注:
于2008-06-01 14:20:41修订的的版本2
大小: 1876
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 38: 行号 38:


{{{#!cplusplus
/*written by czk*/
/*O(n), AC*/
#include <stdio.h>
#include <limits.h>
int main() {
    int T, t;
    scanf("%d", &T);
    for(t = 1; t <= T; t++) {
        int n, i;
        short a[100000];
        int max_sum = INT_MIN;
        int max_start, max_end;
        int start, end, sum;
        scanf("%d", &n);
        for(i = 0; i < n; i++)
            scanf("%d", &a[i]);

        start = 0;
        sum = 0;
        for(end = 0; end < n; end++) {
            sum += a[end];
            if(sum > max_sum) {
                max_sum = sum;
                max_end = end;
                max_start = start;
            }
            if(sum < 0) {
                start = end + 1;
                sum = 0;
            }
        }
        printf("Case %d:\n%d %d %d\n", t, max_sum, max_start+1, max_end+1);
        if(t != T)
            printf("\n");
    }
}
}}}

Max Sum

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

   1 /*written by czk*/
   2 /*O(n^2), Time Limit Exceed*/
   3 #include <stdio.h>
   4 #include <limits.h>
   5 int main() {
   6     int T, t;
   7     scanf("%d", &T);
   8     for(t = 1; t <= T; t++) {
   9         int n, i;
  10         short a[100000];
  11         int max_sum = INT_MIN;
  12         int max_start, max_end;
  13         int start, end;
  14         scanf("%d", &n);
  15         for(i = 0; i < n; i++)
  16             scanf("%d", &a[i]);
  17         for(start = 0; start < n; start++) {
  18             int sum = 0;
  19             for(end = 0; end < n; end++) {
  20                 sum += a[end];
  21                 if(sum > max_sum) {
  22                     max_sum = sum;
  23                     max_start = start;
  24                     max_end = end;
  25                 }
  26             }
  27         }
  28         printf("Case %d:\n%d %d %d\n", t, max_sum, max_start+1, max_end+1);
  29         if(t != T)
  30             printf("\n");
  31     }
  32 }

   1 /*written by czk*/
   2 /*O(n), AC*/
   3 #include <stdio.h>
   4 #include <limits.h>
   5 int main() {
   6     int T, t;
   7     scanf("%d", &T);
   8     for(t = 1; t <= T; t++) {
   9         int n, i;
  10         short a[100000];
  11         int max_sum = INT_MIN;
  12         int max_start, max_end;
  13         int start, end, sum;
  14         scanf("%d", &n);
  15         for(i = 0; i < n; i++)
  16             scanf("%d", &a[i]);
  17 
  18         start = 0;
  19         sum = 0;
  20         for(end = 0; end < n; end++) {
  21             sum += a[end];
  22             if(sum > max_sum) {
  23                 max_sum = sum;
  24                 max_end = end;
  25                 max_start = start;
  26             }
  27             if(sum < 0) {
  28                 start = end + 1;
  29                 sum = 0;
  30             }
  31         }
  32         printf("Case %d:\n%d %d %d\n", t, max_sum, max_start+1, max_end+1);
  33         if(t != T)
  34             printf("\n");
  35     }
  36 }

hdu1003 (2008-06-01 14:24:49由czk编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.