7

指定された整数値の配列 (負の整数を含む) を使用して、配列内の連続する要素の最大和を求めるプログラムを作成してください。

例:

2、3、-6、-1、2、-1、6、4、-8、8

与える

11

O(N^2) よりも高速なソリューションを探しています。

4

3 に答える 3

11

かだねのアルゴリズムはあなたが望むものだと思います

于 2012-09-09T13:12:08.700 に答える
4

これは実際に私が大学で勉強した教科書の問題です (Mark Allen Weiss による C のデータ構造とアルゴリズム)...非常に美しくエレガントなソリューションであり、O(N) で解決します

int MaxSubsequenceSum(int A[])
{
    int sum = 0, maxSum = 0;

    for (int j = 0; j < A.Length; j++)
    {
        sum = sum + A[j];

        if (sum > maxSum)
            maxSum = sum ;
        else if (sum < 0)
            sum = 0;
    }
    return maxSum;
}
于 2012-09-09T14:08:08.110 に答える