【解题报告】【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 }

 

 

posted on 2012-07-21 18:54  coding封神  阅读(133)  评论(0编辑  收藏  举报

导航