1 复杂度为N^2的解法:
#define INF 1000000
int MaxSeq(int str[],int n)
{
int Max=-INF;
//int sum=0;
for(int i=0;i<n;i++)
{
//每次从新开始
int sum=0;
for(int j=i;j<n;j++)
{
sum+=str[j];
if(sum>Max)
{
Max=sum;
}
}
}
return Max;
}
2 假设a[i]为负数,则a[i]不可能为此子序列的起始,同理,若a[i]到a[j]的子序列为负,则a[i]到a[j]不可能为子序列的起始,则可以从a[j+1]开始推进, 实现:
public static int maxSubSum4(int a[]){
int thisMax=0,maxSum=0;
for(int i=0;i<a.length;i++){
thisMax+=a[i];
if(thisMax>maxSum){
maxSum=thisMax;
}
if(thisMax<0){
thisMax=0;
}
}
return maxSum;
}