码迷,mamicode.com
首页 > 其他好文 > 详细

序列问题(续)

时间:2015-11-28 23:14:19      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

最大连续子序列

输出区间首元素,尾元素。若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。 时间复杂度O(n),前缀和则为O(n^2)

技术分享
 1 #include <cstdio>
 2 #include <iostream>
 3 using namespace std;
 4 #define Max 10000+10
 5 int main()
 6 {
 7     int n,s,e,sum,sumMax,S,E;
 8     int a[Max];
 9     int i,j;
10     freopen("in.txt","r",stdin);
11     while(scanf("%d",&n)==1&&n)
12     {
13         sum=0;
14         sumMax=-1;
15         for(i=0;i<n;i++)
16             scanf("%d",&a[i]);
17         s=a[0];
18         S=a[0];
19         for(i=0;i<n;i++)
20         {
21             sum+=a[i];
22             if(sum>sumMax)
23             {
24                 sumMax=sum;
25                 S=s;
26                 E=a[i];
27             }
28             else if(sum<0)
29             {
30                 sum=0;
31                 s=a[i+1];
32             }
33         }
34         if(sumMax<0)    {sumMax=0,S=a[0],E=a[n-1];}
35         printf("%d %d %d\n",sumMax,S,E);
36     }
37 }
View Code

 

序列问题(续)

标签:

原文地址:http://www.cnblogs.com/a1225234/p/5003598.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!