HDU1003 Max Sum
解题思路:最大连续和,此题多了记录的下标,具体见代码。
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 #define inf 0x3f3f3f3f 5 int main() 6 { 7 int t, n, sum, max1, k, kase = 1, s, e, a; 8 scanf("%d", &t); 9 int tmp = t; 10 while(t--) 11 { 12 scanf("%d", &n); 13 s = e = k = 1; 14 sum = 0, max1 = -inf; 15 for(int i = 1; i <= n; i++) 16 { 17 scanf("%d", &a); 18 sum += a; 19 if(sum > max1) 20 { 21 max1 = sum; 22 s = k; 23 e = i; 24 } 25 if(sum < 0) 26 { 27 sum = 0; 28 k = i + 1; 29 } 30 } 31 if(t != tmp-1) printf("\n"); 32 printf("Case %d:\n", kase ++); 33 printf("%d %d %d\n", max1, s, e); 34 } 35 return 0; 36 }