最大子序列和的分治算法

来源:互联网 发布:ubuntu 14.10安装jdk 编辑:程序博客网 时间:2024/05/02 02:10

C++

int maxsum(int *A,int x,int y){    int v,l,r;    if(y-x==1)        return A[x];    int m=x+(y-x)/2;    int maxs=max(maxsum(A,x,m),maxsum(A,m,y));    int v1,l1,r1;    v1=0;l1=A[m-1];    for(int i=m-1;i>=x;i--)        l1=max(l1,v1+=A[i]);    v1=0;r1=A[m];    for(int j=m;j<y;j++)        r1=max(r1,v+=A[j]);    return max(maxs,l1+r1);}

Pyhton

def maxsum(lis):    if(len(lis)==1):        return lis[0]    m=int(len(lis)/2)    maxs=max(maxsum(lis[:m]),maxsum(lis[:m]))    v=0    l=lis[m-1]    for x in range(m):        v+=lis[m-1-x]        l=max(l,v)    v=0    r=lis[m]    for x in range(m,len(lis)):        v+=lis[x]        r=max(r,v)    return max(maxs,l+r)
0 0
原创粉丝点击