273
社区成员
发帖
与我相关
我的任务
分享
1、
int find(int a[],int left,int right)
{
if(left==right)
{
return a[left];
}
int mid=(left+right)/2;
if(mid==0)
{
return 0;
}
int maxNum=max(findMax(a,left.mid),findMax(a,mid+1,right));
int j=0,L=a[mid-1],R=a[mid];
for(int i=mid-1;i>=left;--i)
{
L=max(L,j+=a[i]);
}
j=0;
for(int i=mid;i<=right;i++)
{
R=max(R,j+=a[i]);
}
return max(maxNum,L+R);
}
2、
时间复杂度为O(log n).
3、
分治法的基本思想是将一个规模为你的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。