mXnグリッドのパス数を見つけるには、(1,1)から始まり、(1,1)から始まって、順列を使って、下向き、右向き、 m、n)?私は、動きが下向きおよび右向きの場合には、ストレートフォワードDP解が存在し、さらにP &C解(すなわち、m + n-2Cn-1)があることを知っている。mXnグリッドのパス数
0
A
答えて
0
これは、既存のソリューションDPソリューションをわずかに拡張するだけで、下向きと右向きの移動のみを可能にするパスを計算するだけです。
唯一変更が必要なのは、斜めに移動するとポイントに達する方法の数を数えることです。
私がhttp://www.geeksforgeeks.org/count-possible-paths-top-left-bottom-right-nxm-matrix/から取ったコードは、それをよりよく理解するのに役立ちます。
// Returns count of possible paths to reach cell at row number m and column
// number n from the topmost leftmost cell (cell at 1, 1)
int numberOfPaths(int m, int n)
{
// Create a 2D table to store results of subproblems
int count[m][n];
// Count of paths to reach any cell in first column is 1
for (int i = 0; i < m; i++)
count[i][0] = 1;
// Count of paths to reach any cell in first column is 1
for (int j = 0; j < n; j++)
count[0][j] = 1;
// Calculate count of paths for other cells in bottom-up manner using
// the recursive solution
for (int i = 1; i < m; i++)
{
for (int j = 1; j < n; j++)
// Rightwards Downwards Diagnoally right
count[i][j] = count[i-1][j] + count[i][j-1] + count[i-1][j-1];
}
return count[m-1][n-1];
}
+0
このDP解決法を知っています。 Combinatoricsを使用して上記の問題を解決する方法はありますか? – user3915219
関連する問題
- 1. mXn行列のすべての可能な一意のパスを見つける
- 2. グリッドのユニークなパス - 再帰
- 3. グリッド内の最適なパス
- 4. アセンブリの行列mxnの次元
- 5. マハラノビスの距離(mxn)とm << n
- 6. イメージ内にmxnウィンドウを移動する
- 7. MxN行列を使用したjQueryアニメーション
- 8. x、y平面にMxNグリッドがある場合、f(x、y)を計算して行列に格納する(Python)
- 9. mxn行列内の最大別の正方行列の数を求める
- 10. N次元グリッド内のポイント間のパス数をカウントしますか?
- 11. グリッドが複数のグリッドから可視
- 12. JMeterのインタースレッドグループ通信のMxN呼び出し
- 13. 3DゲームのUnityグリッドでの*パスの検出
- 14. MXNでRNNを使用した形状の不一致 - R
- 15. ストーリーボードの配列MxNを見る方法 - Swift3- Xcide 8.2.1
- 16. NxNグリッド内のすべてのパスを見つける
- 17. 障害物と私の分析グリッドのパスを計算
- 18. 長方形のグリッドで最短のパスをコーナーにコーナー
- 19. KendoUIグリッド10進数の列
- 20. オプションのパス変数
- 21. キャンバス - 複数のパス
- 22. パス空の変数
- 23. import_from_gitのパス変数
- 24. JSONパスの変数
- 25. Infragistics igniteグリッドで複数のグリッドを単一エクセルにエクスポート
- 26. パス変数は
- 27. パス変数は
- 28. パス変数が
- 29. パス引数
- 30. パス変数
斜め条件を含めるようにDPアプローチを拡張することができます。 CountPath [i] [j] = CountPath [i-1] [j] + CountPath [i] [j-1] + CountPath [i] [j] //斜め下方に移動する – thebenman