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) 编辑 收藏 举报