您的位置:首页 > 其它

最大连续子序列和

2016-04-21 17:09 162 查看
最大连续和问题:

1、采用三重循环,算法复杂度为O(n^3)

tot=0;

best=A[1];

for(int i=1;i<=n;i++)

for(int j=i;j<=n;j++){

int sum=0;

for(int k=i;k<=j;k++)

{

sum+=A[k];

tot++;

}

if(sum>best)

best=sum;

}

2、采用双重循环,算法复杂度为O(n^2)

S[0]=0;

for(int i=1;i<=n;i++)

s[i]=s[i-1]+A[i];

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

best=max(best,s[j]-s[i-1]);

3、分治法,算法复杂度为O(nlogn)

int maxsum(int* A,int x,int y)

{

int v,L,R,maxs;

if(y-x==1)

return A[x];

int m=x+(y-x)/2;

int maxs = max(maxsum(A,x,m),max(A,m,y));

int v,L,R;

v=0;L=A[m-1];

for(int i=m-1;i>=x;i--)

L=max(L,v+=A[i]);

v=0;R=A[m];

for(int i=m;i<y;i++)

R=max(R,v+=A[i]);

return max(maxs,L+R);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: