当然,数据结构与算法分析的书上还有分治的方法,这种方法比较简单。第二章。
这是参考:http://blog.csdn.net/lv_zj/article/details/15505305
这是自己写的
#include<iostream>
#include<math.h>
using namespace std;
void MaxSubsequenceSum(const int A[],int N)
{
int thissum,maxsum,j,start,finish,mark;
thissum=0;
maxsum=-1;
start=0;
finish=N-1;
mark=0;
for(j=0;j<N;j++)
{
thissum+=A[j];
if(thissum>maxsum){
maxsum=thissum;
start=mark;
finish=j;
}
else if(thissum<0)
{
thissum=0;
mark=j+1;
}
}
if(maxsum<0)
maxsum=0;
printf("%d %d %d",maxsum,A[start],A[finish]);
}
int main()
{
int m;
int A[10000];
cin>>m;
int i;
for(i=0;i<m;i++)
cin>>A[i];
MaxSubsequenceSum(A,m);
return 0;
}