多数の副問題を伴う動的プログラミング
多数の副問題がある動的プログラミング。だから私はインタビューストリートからこの問題を解決しようとしています: グリッド・ウォーキング(50点のスコア) あなたはに位置しているの位置に次元グリッド。グリッドの次元は)です。1つのステップで、次元のいずれかを1つ前または後ろに歩くことができます。(したがって、常に可能な異なる動きがあります)。どの時点でもグリッドを離れないように、ステップをいくつ実行できますか?あなたは、任意のためならば、グリッドを離れる、どちらかまたは。(X 1は、xは2、... 、xはN)(D 1、D 2、... 、D N N 2 N M X I 、X I ≤ 0 X I > DのIをNNN(x1,x2,…,xN)(x1,x2,…,xN)(x_1,x_2,\dots,x_N)(D1,D2,…,DN(D1,D2,…,DN(D_1,D_2,\dots,D_NNNN2N2N2NMMMxixix_ixi≤0xi≤0x_i \leq 0xi>Dixi>Dix_i > D_i 私の最初の試みは、このメモ化された再帰的な解決策でした: def number_of_ways(steps, starting_point): global n, dimensions, mem #print steps, starting_point if (steps, tuple(starting_point)) in mem: return mem[(steps, tuple(starting_point))] val = 0 if …