//最大子序列和算法1,算法复杂度T=O(n^2)
#include<iostream>
using namespace std;
int find(int*a,int N);
clock_t start, stop;
int main()
{
int a[25]={1,4,-9,5,3,6,7,1,2,4,-8,-1,4,7,-5,7,1,-6,-1,4,3,55,8,-89,10};
cout<<find(a,15)<<endl;
return 0;
}
int find(int*a,int N)
{
int i,j,k,thissum,maxsum=a[0];
for(i=0;i<N;i++){//i为子序列的左端
thissum=0; //表示a[i]到a[j]的子序列和
for(j=i;j<N;j++){ //j为子序列的右端
thissum+=a[j];//对于相同的i不同的j,只要在j-1的基础上再加上a[j]就可以了
if(thissum>maxsum)
maxsum=thissum; //如果大就要更新结果
}
}
return maxsum;
}