自定义了一个数组,测试了一下。。
函数可以直接用。。
新人小白首发。。(其实也就是看完别人的代码自己闭眼写了一下)
#include <iostream>
int Max3(int a, int b, int c)
{
return (a > b) ? (a > c) ? a : c : (b > c) ? b : c;
}
int Divideandconque(int a[],int left,int right)
{
int mid = (left + right) / 2;
if (left == right)
{
if (a[left] > 0)
{
return a[left];
}
return 0;
}
int Maxleftsum = Divideandconque(a, left, mid);
int Maxrightsum = Divideandconque(a, mid + 1, right);
int Maxleftbordersum = 0;
int Maxrightbordersum = 0;
int sum = 0;
int i;
for (i = mid; i >= left; i--)
{
sum += a[i];
if (Maxleftbordersum < sum)Maxleftbordersum = sum;
}
sum = 0;
for (i = mid+1; i <= right; i++)
{
sum += a[i];
if (Maxrightbordersum < sum)Maxrightbordersum = sum;
}
return Max3(Maxleftsum, Maxrightsum, Maxleftbordersum + Maxrightbordersum);
}
int main()
{
int n[] = { 2,-1,5,7,-3,4,-6,9,1 };
int a=Divideandconque(n, 0, 8);
std::cout << a << std::endl;
}