给定一个数组-3,5,5,6,7,8,7,求该数组的最大连续子数组的和
int MaxNum(int *arr,int len)
{
assert(arr != NULL && len > 0);
int max = 0x80000000;//int 类型的最小值
int sum = 0;
for(int i = 0; i < len;i++)
{
//sum = 0;
if(sum <= 0)
{
sum = arr[i];
}
else
{
sum += arr[i];
}
if(sum > max)
{
max = sum;
}
}
return max;
}
int MaxNum(int *arr,int len)
{
assert(arr != NULL && len > 0);
int max = 0x80000000;
int sum = 0;
for(int i = 0; i < len;i++)
{
sum = 0;//第二趟的时候
for(int j = i;j < len;j++)//O(n^2)
{
sum += arr[j];//10 9 18 -82
if(sum > max)
{
max = sum;//10 18
}
}
}
return max;
}
int main ()
{
int arr[7] = {-3,5,5,6,7,8,7};
int len = sizeof(arr)/sizeof(arr[0]);//求数组的长度
int max = MaxNum(arr,len);
printf("%d\n",max);
return 0;
}