動規求最大一維連續子數組,f[i] 表示以i結尾的子數組和。4ms
#define MAX(a, b) ((a) > (b) ? (a) : (b))
int maxSubArray(int* nums, int numsSize) {
int* f = malloc(sizeof(int) * numsSize);
int i, res = f[0] = nums[0];
for (i = 1 ; i < numsSize ; i++) {
f[i] = MAX(f[i-1] + nums[i], nums[i]);
res = MAX(f[i], res);
}
free(f);
return res;
}