【解题报告】【HODJ1231】【最大子序列和】最大连续子序列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231
1 #include<stdio.h> 2 int main() 3 { 4 int n,i,j,k1,k2,sum,sumx; 5 int a[10000],leap1,leap2; 6 while(scanf("%d",&n)!=EOF&&n) 7 { 8 for(i=0;i<n;i++) 9 scanf("%d",&a[i]); 10 leap1=0; 11 leap2=1; 12 for(i=0;i<n;i++) 13 { 14 if(a[i]==0) leap1=1; 15 if(a[i]>0) leap2=0; 16 } 17 if(leap1&&leap2) 18 printf("0 0 0\n"); 19 else 20 { 21 sum=sumx=0; 22 k1=a[0]; 23 for(j=n-1;j>=0;j--) 24 { 25 sumx+=a[j]; 26 if(sumx>=sum) 27 { 28 sum=sumx; 29 k1=a[j]; 30 } 31 else if(sumx<0) 32 sumx=0; 33 } 34 sum=sumx=0; 35 k2=a[n-1]; 36 for(j=0;j<n;j++) 37 { 38 sumx+=a[j]; 39 if(sumx>sum) 40 { 41 sum=sumx; 42 k2=a[j]; 43 } 44 else if(sumx<0) 45 sumx=0; 46 } 47 printf("%d %d %d\n",sum,k1,k2); 48 } 49 } 50 return 0; 51 }