1.数组的最大子序列和
1.1 O(N*N*N):最直观
0<=i<=k<=j<=n-1
动态边缘i,j记录数组的两端,k遍历并记录arr[i]到arr[j]的最大序列和
1.2 O(N*N)
sum[i,j]-sum[i,j-1]+arr[j]
0<i<=j<n
1.3 O(N)
动态规划.
int max(int a, int b)
{
return (a>b)?a:b;
}
int MaxSum(int * a,int n)
{
int start;
int all;
int i;
start=a[0];
all=a[0];
for(i=1;i<n;++i)
{
start=max(a[i],a[i]+start);
all=max(start,all);
printf("start=%d\n",start);
printf("all=%d\n",all);
}
return all;
}