联机算法求最大子序列和

一个无序的数组,找出相邻的任意个元素,使得其和最大。

int max_subseq_sum(int *a,int N) { int i,sum=0,max=0; for(i=0;i<N;++i) { sum+=a[i]; if(sum<0) sum=0; else if(sum>max) max=sum; } return max; } int main() { int sum,s[10]={-1,3,88,45,-23,44,33,2,-12,21}; sum=max_subseq_sum(s,10); cout<<sum<<endl; return 0; }

 

O(n)的复杂度,顺序读取,任意步骤都是当前读取的序列判断最优解,此谓联机算法。

你可能感兴趣的:(算法)