左コーナーMXNグリッドに位置ロボットは(以下、「スタート」と表示されたポイントのフィギュアを開始します)。
ロボットは右または下に一歩を移動することができます。(「完了」と表示され、次の図の)グリッドの右下隅に到達しようとしているロボット。
Q.合計でありますどのように多くの異なるパス?
クラス解決{ パブリック: INT uniquePaths(INT M、int型N){ ベクトル < INT > DP(N、1 )。 用(int型 iは= 1 ; iが<M ++ {i)が ため(INT J = 1 ; J <N ++ J){ DP [J] - + = DP [J 1 ;] } } 戻り DP [N - 1 ]。 } }。
アイデア:
ダイナミックプログラミング、その質問ラダーアナロジーを登ります。DPは、DP [I] [j]は歩行方法の異なる数の現在位置を表すが、次いで、漸化式のように得ることができる二次元アレイ、維持することができる:DP [I] [J] = DPを[I - 1] [J] + DP [I] [J - 1]のラインによって、スペースを節約するために、我々は1次元配列のDPを使用し、ラインをリフレッシュすることができます