标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 26553 Accepted Submission(s): 11967
int work(int* v, int n) { int maxSum = 0; int curSum = 0; for(int i = 1; i <= n; ++i){ if(curSum>0) curSum += v[i]; else curSum = v[i]; if(curSum>maxSum) maxSum = curSum; } return maxSum; }
在此基础上稍作修改即可。
1 #include <cstdio> 2 3 int a[10000]; 4 5 int work(int* v, int n, int& l, int& r) 6 { 7 int maxSum = v[0],curSum = v[0]; 8 int pos; 9 for(int i = 1; i<n; ++i){ 10 if(curSum<0){ 11 curSum = v[i]; 12 pos = i; 13 } 14 else 15 curSum += v[i]; 16 if(curSum>maxSum){ 17 maxSum = curSum; 18 l = pos; 19 r = i; 20 } 21 } 22 return maxSum; 23 } 24 25 int main() 26 { 27 int k; 28 while(scanf("%d",&k), k){ 29 for(int i = 0; i<k; ++i) 30 scanf("%d", &a[i]); 31 int l = 0, r = 0; 32 int maxSum = work(a, k, l, r); 33 if(maxSum<0) 34 printf("0 %d %d\n", a[0], a[k-1]); 35 else 36 printf("%d %d %d\n", maxSum, a[l], a[r]); 37 } 38 return 0; 39 }
标签:
原文地址:http://www.cnblogs.com/inmoonlight/p/5502557.html