题意:。。。
策略:看着像贪心,感觉也是贪心。
很久之前做的,又做了一遍,好题。
代码:
#include<stdio.h>
#include<string.h>
int s[100005];
int main()
{
int t, i, j, l, st, en, n, v = 1;
scanf("%d", &t);
while(t --){
scanf("%d", &n);
for(i = 1; i <= n; i ++){
scanf("%d", &s[i]);
}
int max = -1000000;
int sum = 0;
l = st = en = 1;//l是储存当前子段的起始
for(i = 1; i <= n; i ++){
if(sum >= 0){
sum+=s[i];
}
else{
sum = s[i];
l = i;
}
if(sum > max){//只有当sum>max的时候才更新st和en
max = sum;
st = l;
en = i;
}
}
printf("Case %d:\n", v++);
printf("%d %d %d\n", max, st, en);
if(t) printf("\n");
}
}