子数组的和的最大值(二)

2012-12-06 13:50:55 · 作者: · 浏览: 935

 

  //0x80000000表示最小值-2147483648,考虑到全部输入为负数

  int nGreatestSum = 0x80000000;

  for(int i = 0; i < nLength; ++i)

  {

  if(nCurSum <= 0)

  nCurSum = pData[i];

  else

  nCurSum += pData[i];

  if(nCurSum > nGreatestSum)

  nGreatestSum = nCurSum;

  }

  return nGreatestSum;

  }

  int fun(int a[],int size)

  {

  int sum=0;

  int max=0;

  for(int i=0;i<size;i++)

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

  {

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

  {

  sum+=a[k];

  }

  if(sum>max)

  max=sum;

  sum=0;

  }

  return max;

  }

  int main()

  {

  int a ={1, -2, 3, 10, -4, 7, 2, -5};

  //  int max1=fun(a,8);

  int max=FindGreatestSumOfSubArray(a,8);

  cout<<max<<endl;

  return 0;

  }