package com.test1;
public class Test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test3 test=new Test3();
int a[]={4,-3,5,-2,-1,2,6,-2};
int n=8;
int b=test.MaxSeqSum3(a, n);
System.out.println(b);
}
//在线处理
//T(N)=O(N)
public int MaxSeqSum1(int a[],int n){
int thissum,maxsum;
int i;
thissum=maxsum=0;
for(i=0;i<n;i++){
thissum+=a[i];//向右累加
if(thissum>maxsum){
maxsum=thissum;//发现更大和则更新结果
}else if(thissum<0){//如果当前子列和为负
thissum=0;//则不能使后面的和增大,抛弃
}
}
return maxsum;
}
//穷举法
//T(N)=O(N^3)
public int MaxSeqSum2(int a[],int n){
int thissum,maxsum;
int i,j,k;
maxsum=0;
for(i=0;i<n;i++){
for(j=i;j<n;j++){
thissum=0;
for(k=i;k<=j;k++){
thissum+=a[k];
if(thissum>maxsum){
maxsum=thissum;
}
}
}
}
return maxsum;
}
//
// public int MaxSeqSum3(int a[],int n){
// int thissum,maxsum=0;
// int i,j;
// for(i=0;i<n;i++){
// thissum=0;
// for(j=i;j<n;j++){
// thissum+=a[i];
// if(thissum>maxsum){
// maxsum=thissum;
// }
// }
//
//
//
// }
// return maxsum;
// }
}