Example #1
0
/* get max linear list [x, y)*/
int maxsum(int* A, int x, int y)
{
  if(y - x == 1) 
  {
    if (A[x] >= 0)return A[x];
    else return 0;
  }
  int i,m;
  int max1, max2, L, R;
  int sum;
  m = x + (y-x)/2;
  max1 = maxsum(A, x, m);
  max2 = maxsum(A, m, y);
  max1 = max1 > max2 ? max1 : max2;
  L = 0;
  sum = 0;
  for(i = m - 1; i >= x; i--)
  {
    sum += A[i];
    if (L < sum) L = sum;
  }
  sum = 0;
  R = 0;
  for(i = m; i < y; i++)
  { 
    sum += A[i];
    if ( R < sum) R = sum;
  }
  max1 = max1 > (L+R) ? max1: (L+R);
  return max1;
}
Example #2
0
int main(){
    int ar[] = {8,15,3,7};
    std::cout << "max:\t" << maxsum(ar,4) << std::endl;
    int ar1[] = {1,3,19,6,8,2};
    std::cout << "max:\t" << maxsum(ar1,6) << std::endl;
    return 0;
}
void maxsum(BTREE T, int result, int max[], int index){

   if(T == NULL)
    return;
  result+= T->element;
  if((T->left == NULL)&&(T->right == NULL)){
   max[index++] = result; 
  }
  maxsum(T->left, result, max, index);
  maxsum(T->right, result, max, index);
}
    int maxsum(TreeNode* root, int& res){
    	if(root == NULL)
    		return 0;

    	int left = maxsum(root->left, res);
    	int right = maxsum(root->right, res);
    	
    	if(left < 0) left = 0;
    	if(right < 0) right = 0;

    	if((left + right + root->val) > res)
    		res = left + right + root->val;

    	return max(left, right) + root->val;

    }
    int maxPathSum(TreeNode* root) {
    	int res = 0x80000000;

    	maxsum(root, res);

    	return res;
    }
Example #6
0
int maxsum(int A[],int x,int y)
{
    int v,L,R,maxs,i;
    if(y-x==1) return A[x];
    int m=x+(y-x)/2;
    maxs=max(maxsum(A,x,m),maxsum(A,m,y));
    v=0;
    L=A[m-1];
    for(i=m-1; i>=x; i--) {
        v+=A[i];
        L=max(L,v);
    }
    v=0;
    R=A[m];
    for(i=m; i<y; i++) {
        v+=A[i];
        R=max(R,v);
    }
    return max(maxs,L+R);
}
Example #7
0
int main()
{
	elem_t matrix[MAXN][MAXN];
	int n;
	int i,j;
	scanf("%d",&n);
	for( i = 0; i < n; i++ )
		for( j = 0; j < n; j++ )
			scanf("%d",&matrix[i][j]);
	printf("%d\n",maxsum(n,n,matrix));
	return 0;
}
int main() {
    int cases=0,casedone=0;
    int  n,k;
    long *array = (long*)malloc(sizeof(long)*n);
    fscanf(stdin,"%d %d",&n,&k);
    int i =0;
    while(casedone < n) {
        fscanf(stdin,"%ld",&array[casedone]);
        casedone++;
    }
    printf("%ld",maxsum(n,k,array));
}
Example #9
0
int main(int argc, char** argv)
{
  int m;
  while(scanf("%d", &m) == 1)
  {
    int i;
    for(i = 0; i<m; i++)scanf("%d", &buff[i]);
    int max = maxsum(buff, 0, m);
    printf("%d\n", max);
  }
  return 0;
}
Example #10
0
main(){
    int n,i,j,k,max,sum,tmp[101],t;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        max=-2147483646;
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                scanf("%d",&map[i][j]),dp[i][j]=0;
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                dp[i][j]=dp[i-1][j]+map[i][j];
        for(i=1;i<=n;i++)
            for(j=i;j<=n;j++){
                for(k=1;k<=n;k++)
                    tmp[k-1]=dp[j][k]-dp[i-1][k];
                max>?=maxsum(n,tmp);
                for(k=1;k<=n;k++)
                    tmp[k-1]=dp[n][k]-tmp[k-1];
                max>?=maxsum(n,tmp);
            }
        printf("%d\n",max);
    }
}
int get_max(BTREE T){
  
  int max[len] = {0};
  int index = 0, tmp = 0;
  maxsum(T, 0, max, index);
  
  for(index=0; index<len; index++){
    if(tmp < max[index])
       tmp = max[index];
  }

  return tmp;
  
  
}
Example #12
0
int maxSubArray(int A[],int n)
{
    return maxsum(A,0,n);
}