求子串和的最大值(最慢与最快)
最慢的O(N*N*N):
#include"stdio.h"
int MaxSubseqSum(int a[],int n)
{
int ThisSum,MaxSum=0;
int i,j,k;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
ThisSum=0;
for(k=i;k<=j;k++)
{
ThisSum+=a[k];
printf("%d ",ThisSum);
}
printf("--------\n");
if(ThisSum>MaxSum)
MaxSum=ThisSum;
}
}
return MaxSum;
}
int main()
{
int b[]={1,2,-1,8,-3,5,9,-7};
int data;
data=MaxSubseqSum(b,8);
printf("%d",data);
}
最快的O(N):
#include"stdio.h"
int MaxSubseqSum4(int a[],int n)
{
int ThisSum,MaxSum;
int i;
ThisSum=MaxSum=0;
for(i=0;i<n;i++)
{
ThisSum+=a[i];
printf("%d \n",ThisSum);
if(ThisSum>MaxSum)
MaxSum=ThisSum;
else if(ThisSum<0)
ThisSum=0;
}
return MaxSum;
}
int main()
{
int b[]={1,2,-1,8,-3,5,9,-7};
int data;
data=MaxSubseqSum4(b,8);
printf("%d",data);
}
还没有评论,来说两句吧...