Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17014 Accepted Submission(s): 7474
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 int que[10005]; 7 int main() 8 { 9 int n; 10 while(scanf("%d",&n),n) 11 { 12 int flag = 0; 13 for(int i = 1;i <= n;++i) 14 { 15 scanf("%d",&que[i]); 16 if(que[i] == 0) 17 flag = max(1,flag); 18 if(que[i] > 0) 19 flag = max(2,flag); 20 } 21 if(!flag) 22 { 23 printf("0 %d %d\n",que[1],que[n]); 24 continue; 25 } 26 if(flag == 1) 27 { 28 for(int i = 1;i <= n;++i) 29 if(que[i] == 0) 30 { 31 printf("0 %d %d\n",que[i],que[i]); 32 break; 33 } 34 continue; 35 } 36 int M = 0,sum = 0,s,e; 37 for(int i = 1;i <= n;++i) 38 if(sum + que[i] > 0) 39 { 40 sum += que[i]; 41 if(sum > M) 42 { 43 M = sum; 44 e = i; 45 } 46 } 47 else sum = 0; 48 sum = 0; 49 for(int i = e;i >= 1;--i) 50 { 51 sum += que[i]; 52 if(sum == M) 53 { 54 s = i; 55 break; 56 } 57 } 58 printf("%d %d %d\n",M,que[s],que[e]); 59 } 60 return 0; 61 }
HDU 1231 最大连续子序列,布布扣,bubuko.com
原文:http://www.cnblogs.com/xiaxiaosheng/p/3597235.html