#include <stdio.h>
#include <stdlib.h>
#define NUM 10
int main(void)
{
int a[NUM] = { -2,4,-8,-23,37,23,1,-2,-10,54};
int begin, end, maxValue;
int maxSubarray (int *a, int num, int *left, int * right);
maxValue = maxSubarray ( a, NUM, &begin, &end);
printf("%d,%d,%d", begin, end, maxValue);
return 0;
}
int maxSubarray (int *a, int num, int *left, int * right)
{
int nEnd = a[0], nAll = a[0];
int i, max;
*left = *right = 0;
for ( i = 1; i < num; i++ )
{
if ( nEnd < 0 )
{
nEnd = 0;
*left = i;
}
nEnd = nEnd + a[i];
if ( nEnd > nAll )
{
nAll = nEnd;
*right = i;
}
}
return nAll;
}
max sub array——dynamic programming
最新推荐文章于 2023-08-02 00:17:20 发布