max sum 不用考虑全是负数。。

#include <stdio.h>
#include
<string.h>
#include
<stdlib.h>

int dp[100010];

int main( )
{
int T, i, j, N, a, b, c, d, l, max, sum, flag ;
scanf(
"%d",&T);
l
= 0;

while (T--) {
l
++;

//sum = max = 0;
memset(dp, 0, sizeof(dp));
scanf(
"%d",&N);
for (i = 1; i <= N; i++)
scanf(
"%d",&dp[i]);



printf(
"Case %d:\n",l);

max
= sum = dp[1];
a
= b = c = d = 1;
for (i = 2; i <= N; i++) {
if (sum < 0)
sum
= dp[i], a = i, b = i;
else
sum
+= dp[i], b = i;
if (sum > max) {
c
= a;
d
= b;
max
= sum;
}
}
printf(
"%d %d %d\n",max,c,d);
if (T)
puts(
"");
}
return 0;
}

posted on 2011-07-31 20:16  more think, more gains  阅读(275)  评论(0编辑  收藏  举报

导航