maxsum

来源:互联网 发布:js补全位数 编辑:程序博客网 时间:2024/05/24 04:39

//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;
 
}