//solved 1:
int maxsum(int x[],int n){
int e=0;
int s=0;
for(int i=0;i<n;i++){
if(e+x[i]<0) e=0;
else e+=x[i];
if(e>s) s=e;
}
return s;
}
//solved 2:
int maxsum(int x[],int left,int right){
int maxleft=0;
int maxright=0;
int sum;
int result;
int middle;
int m_left=0;
int m_right=0;
int m_middle=0;
middle=(left+right)/2;
maxleft=maxsum(x,left,middle);
maxright=maxsum(x,middle+1,right);
sum=0;
for(int i=middle;i>=left;i--) {
sum+=x[i];
if(m_left<sum) m_left=sum;
}
sum=0;
for(int i=middle;i<=right;i++){
sum+=x[i];
if(m_right<sum) m_right=sum;
}
m_middle=m_left+m_right;
if(maxleft<m_middle) return (m_middle>maxright)?m_middle:maxright;
else return (maxlet>maxright)?maxletf:maxright;
}
maxsum
最新推荐文章于 2022-10-14 22:15:56 发布