课后作业第二篇

作业:求一个整数数组所有子数组的和的最大值

#include<iostream>

using namespace std;

bool Find(int *pData, unsigned int nLength, int &nGreatestSum)
{
if(pData == NULL || nLength == 0)
return false;

int nCurSum = nGreatestSum = 0;

for(unsigned int i = 0; i < nLength; i++)
{
nCurSum += pData[i];
if(nCurSum < 0)
nCurSum = 0;
if(nCurSum > nGreatestSum)
nGreatestSum = nCurSum;
}

if(nGreatestSum == 0)
{
nGreatestSum = pData[0];
for(unsigned int i = 1; i < nLength; i++)
{
if(pData[i] > nGreatestSum)
nGreatestSum = pData[i];
}
}
cout<<nGreatestSum<<endl;
return true;
}

int main()
{
int a[] = {1, 2, -3, 10, 4, -7, 2, -5};
int greatNum;
Find(a, sizeof(a) / sizeof(int), greatNum);
//
system("pause");
return 0;
}

结果:

猜你喜欢

转载自www.cnblogs.com/f135114/p/9752012.html