0

数値の配列が与えられた場合、最小合計を見つけます。部分配列の長さは 0 にはなりません。

kadane のアルゴリズムを使用できることはわかっていますが、サブ配列の長さが 0 であってはならないという質問が必要です。したがって、私の実装では、配列のすべての要素が正の場合を処理できません。

たとえば、配列が 2、5、3、8、4 の場合、最小合計は 2 です。

-5、-4、5、-1、2、最小合計は -9 (最初の 2 つの要素の合計) のような通常の配列でも動作する必要があります。

どうすればこれを達成できますか?

これが私の実装です:

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

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

1 に答える 1

2

カデナのアルゴリズムを使用するだけで、答えが空の部分配列である場合は、代わりに配列内の最小要素を見つけます。

于 2014-07-05T14:54:37.727 に答える