题意:。。。
策略:看着像贪心,感觉也是贪心。
很久之前做的,又做了一遍,好题。
代码:
#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"); } }
hdoj 1003 Max Sum 【最大子段和】【贪心】,布布扣,bubuko.com
时间: 2024-10-14 00:53:49