编程之美
/*
编程之美 2.14 求数组的子数组之和的最大值
Dynamic Programming
*/
#include <iostream>
using namespace std;
int MaxSum(int *arr, int n);
int main()
{
int arr[] = {1, -2, 3, 5, -3, 2};
int arr1[] = {0, -2, 3, 5, -1, 2};
int arr2[] = {-9, -2, -3, -5, -3};
cout<<MaxSum(arr2, 6)<<endl;
cout<<MaxSum(arr1, 6)<<endl;
cout<<MaxSum(arr, 6)<<endl;
system("pause");
return 0;
}
int MaxSum(int *arr, int n)
{
int max = arr[0];
int sum = 0;
for (int i=1; i<n; i++)
{
sum += arr[i];
if (sum > max)
{
max = sum;
}
if (sum < 0)
{
sum = 0;
}
}
return max;
}