この問題への入力は、配列A[1...n]
の実数です。隣接するサブシーケンスA[i],A[i+1],...A[j]
のすべての数字を合計すると、最大値が何であるかを調べる必要があります。A
です。 A
に負の数が含まれていない場合、問題は簡単で、A
のすべての要素を合計することで解決できます。しかし、A
に正の数と負の数が混在していると、より難しくなります。最大値隣接サブシーケンスアルゴリズム
たとえば、A = [-2,11,-4,13,-5,-3]
の場合、溶液は20
(11-4 + 13 = 20)です。 A = [-2,1,-3,4,-1,2,1,-5,4]
については、溶液は6
(4-1 + 2 + 1 = 6)である。空のサブシーケンスの数の合計は0
です。 はO(n^3)でこの問題を解決する強引なソリューションが存在する
、線形時間で問題を解決することも可能です。
- 上記の問題を線形時間で解くアルゴリズムを設計します。あなたのアルゴリズムを擬似コードで表現する。
- アルゴリズムがどのように、なぜあなたのアルゴリズムが機能するかを簡単に説明します。
- アルゴリズムが実際に線形時間で動作する理由を簡単に説明してください。