各セルが 1 または 0 のいずれかを含むことができる 2 次元の m*n グリッドを考えてみましょう。このグリッドを移動することにより、トラバーサルが取得できる最大値を見つけます。値は、1 セルを斜めにトラバースすることで増加できます。グリッドの走査は、次の規則に従います。
- 左上のセルから開始します。
- 各セルで、走査は 1 グリッド下に移動するか、1 グリッド右に移動するか、斜めに移動します (1 グリッド下に移動し、1 グリッド右に移動します)。セルに 1 が含まれていて、トラバーサルが斜めに移動する場合、トラバーサル値は 1 増加します。
- トラバーサルはグリッドから移動できません (右端で右に移動できない場合、下端で下に移動できない場合)。
- 右下隅で終了します。
単純なアルゴリズムは、3*m*n 回のトラバーサルをすべて考慮し、最大値を選択します。誰かがより良い解決策を考え出すのを手伝ってくれますか? 同様の問題を解決するアルゴリズムはありますか?
これはインタビューの質問ではありません。Smith-Waterman アルゴリズムを最適化するために必要です。
例:
次のグリッドの最大値は 2 です。

これの最大値は 7 です。
