<子阵列长度的最小和> 0

时间:2014-07-05 14:43:13

标签: arrays algorithm minimum kadanes-algorithm

给定一个数字数组,找到最小总和,并且子数组的长度不能为0.

我知道我可以使用kadane的算法,但问题是要求子阵列的长度不应为0.因此,我的实现无法处理数组中所有元素都是正数的情况。

例如,给定以下数组: 2,5,3,8,4,最小总和为2.

它还必须适用于普通数组,如: -5,-4,5,-1,2,最小和为-9(前两个元素的总和)

我如何实现这一目标?

这是我的实施:

while (N--) {
    scanf("%i", &num);

    localmx += num;
    if (localmx > 0) localmx = 0;
    if (localmx < mx) mx = localmx;
}

1 个答案:

答案 0 :(得分:2)

只需使用kadena的算法,如果答案是空的子阵列,则在阵列中找到最少的元素。