#include<iostream>
using namespace std;
/* 求连续子数组的最大和
* 利用动态规划的思想
*f[n]=a[n] ;n=0 | f[n-1]<0
int GetGreateSum(int num[],int n){
if(num==NULL||n<=0)
exit;
int maxSum=num[0];
int sum=num[0];
for(int i=1;i<n;i++){
if(sum<0)
sum=num[i];
else sum+=num[i];
if(maxSum<sum)
maxSum=sum;
}
return maxSum;
}
int main(){
int num[]={1,-2,3,10,-4,7,2,-5};
int len=8;
cout<<GetGreateSum(num,len);
return 0;
}
using namespace std;
/* 求连续子数组的最大和
* 利用动态规划的思想
*f[n]=a[n] ;n=0 | f[n-1]<0
*f[n]=f[n-1]+a[n] ;f[n-1]>=0
*max(f[n]就是最大的和
*/int GetGreateSum(int num[],int n){
if(num==NULL||n<=0)
exit;
int maxSum=num[0];
int sum=num[0];
for(int i=1;i<n;i++){
if(sum<0)
sum=num[i];
else sum+=num[i];
if(maxSum<sum)
maxSum=sum;
}
return maxSum;
}
int main(){
int num[]={1,-2,3,10,-4,7,2,-5};
int len=8;
cout<<GetGreateSum(num,len);
return 0;
}