1 #include <cstdio> 2 #include <cstring> 3 4 using namespace std; 5 const int maxn = 10000; 6 int num[maxn+5]; 7 8 int main() 9 { 10 int k; 11 while(scanf("%d" , &k)){ 12 if(k == 0) break; 13 int flag = 0; 14 for(int i = 0 ; i<k ; i++){ 15 scanf("%d" , num+i); 16 if(num[i] >= 0) flag = 1; 17 } 18 if(!flag){ 19 printf("0 %d %d\n" , num[0] , num[k-1]); 20 continue; 21 } 22 int _max = num[0]; 23 int sum = num[0]; 24 int st = 0; 25 int la = 0; 26 int rec; 27 for(int i = 1 ; i<k ; i++){ 28 if(sum < 0){ 29 rec = i;//记录起点 30 sum = 0; 31 } 32 sum += num[i]; 33 if(sum > _max){ 34 _max = sum; 35 st = rec; 36 la = i; 37 } 38 } 39 printf("%d %d %d\n" , _max , num[st] , num[la]); 40 } 41 return 0; 42 }
原文:http://www.cnblogs.com/CSU3901130321/p/4163945.html