标签:编写程序 star mit 一个 ace bsp sample 序号 submit
8
6 -2 11 -4 13 -5 -2 10
20
-10 1 2 3 4 -5 -23 3 7 -21 6 5 -8 3 2 5 0 1 10 3
8
-1 -5 -2 3 -1 0 -2 0
4
-1 -2 -4 -3
27 0 7 27 10 19 3 3 3 0 0 0
1 #include<iostream>
2 /*本题有多种解法,这里介绍我用的这一种,最大连续子序列,从第一个元素开始,对每个
3 元素加入子序列进行求和,如果和小于0,就进行更新,并不断更新最大的子序列*/
4 using namespace std;
5
6 int sub[10005];
7
8 int main(){
9 int k,max,start,end,sum,temp;
10 while(cin>>k&&k!=0){
11 bool flag=true;
12 max=0;
13 for(int i=0;i<k;i++){
14 cin>>sub[i];
15 if(sub[i]>=0){
16 flag=false;
17 }
18 }
19 if(flag){
20 cout<<max<<" "<<0<<" "<<0<<endl;
21 continue;
22 }
23 else{
24 max=sub[0];
25 sum=sub[0];
26 start=0;
27 end=0;
28 temp=0;
29 for(int i=1;i<k;i++){
30 if(sum<0){
31 temp=i;
32 sum=0;
33 }
34 sum+=sub[i];
35 if(sum>max){
36 max=sum;
37 start=temp;
38 end=i;
39 }
40 }
41 }
42 cout<<max<<" "<<start<<" "<<end<<endl;
43 }
44 return 0;
45 }
1008: 最大连续子序列(2014年中南大学研究生复试机试题 )
标签:编写程序 star mit 一个 ace bsp sample 序号 submit
原文地址:https://www.cnblogs.com/tangyimin/p/10547689.html