2

そのようなすべてのサブシーケンスの中で最大の合計を持つN個の長整数のシーケンス内で最大M個の連続するサブシーケンスを見つける線形アルゴリズムを設計します。アルゴリズムを実装し、実行時間の増加の順序が線形であることを確認します。

何度か読んだことがありますが、何をしてほしいのか理解するのに苦労しています。

4

2 に答える 2

6

1 行に 10 個の整数があるとします。そのうちの 1、2、または 3 つを順番に選択して追加できます。合計が最大になるように選択するものを見つける必要があります。この場合、M=3、N=10 です。アルゴリズムは線形時間で実行する必要があります。

于 2012-11-13T01:49:11.177 に答える
2

私はそれがこのように意味すると思います(アレックスの答えのカウントに従う):

N = 10
144  23  89   21  145  2   11  9  1   69

M = 3 (this is max)

take 1 number
highest is 145

take 2 numbers consequtive
highest is 144 + 23 = 167

take 3 numbers consequtive
highest is 144 + 23 + 89 = 256

Therefore answer = 144, 23, 89

負またはゼロが含まれます:

N = 10
0  -23  -89   21  -145  -2   11  -1  1   69

M = 3 (this is max)

take 1 number
highest is 69

take 2 numbers consequtive
highest is 1 + 69 = 70

take 3 numbers consequtive
highest is -1 + 1 + 69 = 69

Therefore answer = 1, 69

私が正しいか間違っているかコメントしてください。

サブシーケンスの数値の数がM未満になる可能性がある状況を見つけることができません。どのように考えても、Mで*ある必要があります。ウィンドウだけがN個の整数の中で最も高いものを常に含む必要はありません。

*カウントがM未満のケースを1つ見つけました。上記の2番目のコードブロックを参照してください。

于 2012-11-13T02:29:48.060 に答える