そのようなすべてのサブシーケンスの中で最大の合計を持つN個の長整数のシーケンス内で最大M個の連続するサブシーケンスを見つける線形アルゴリズムを設計します。アルゴリズムを実装し、実行時間の増加の順序が線形であることを確認します。
何度か読んだことがありますが、何をしてほしいのか理解するのに苦労しています。
1 行に 10 個の整数があるとします。そのうちの 1、2、または 3 つを順番に選択して追加できます。合計が最大になるように選択するものを見つける必要があります。この場合、M=3、N=10 です。アルゴリズムは線形時間で実行する必要があります。
私はそれがこのように意味すると思います(アレックスの答えのカウントに従う):
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番目のコードブロックを参照してください。