一個數組 裡面正數和負數求所有子陣列的最大值
using namespace std;
int maxSum(int* a, int n)
{
int sum = 0;
//其實要處理全是負數的情況,很簡單,如稍後下面第3點所見,直接把這句改成:"int sum=a[0]"即可
//也可以不改,當全是負數的情況,直接返回0,也不見得不行。
int b = 0;
for (int i = 0; i<n; i++)
{
if (b<0) //...
b = a[i];
else
b += a[i];
if (sum<b)
sum = b;
}
return sum;
}
int main()
{
int a[10] = { 1, -2, 3, 10, -4, 7, 2, -5 };
//int a[]={-1,-2,-3,-4}; //測試全是負數的用例
cout << maxSum(a, 8) << endl;
return 0;
}