0

给定一个数字数组,求最小和且子数组的长度不能为 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;
}
4

1 回答 1

2

只需使用 kadena 的算法,如果答案是一个空子数组,则查找数组中的最小元素。

于 2014-07-05T14:54:37.727 回答