1. 程式人生 > 實用技巧 >技術點16:JSON

技術點16:JSON

技術標籤:每日學習動態規劃動態規劃演算法leetcode

一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為 “Start” )。

機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為 “Finish” )。

問總共有多少條不同的路徑?

示例 1:

輸入:m = 3, n = 7
輸出:28

示例 2:

輸入:m = 3, n = 2
輸出:3
解釋:
從左上角開始,總共有 3 條路徑可以到達右下角。
1. 向右 -> 向右 -> 向下
2. 向右 -> 向下 -> 向右
3. 向下 -> 向右 -> 向右

示例 3:

輸入:m = 7, n = 3
輸出:28

示例 4:

輸入:m = 3, n = 3
輸出:6

提示:

  • 1 <= m, n <= 100
  • 題目資料保證答案小於等於 2 * 109
Related Topics
  • 陣列
  • 動態規劃
題解
public class UniquePaths {

    /**
     *  TODO 最重要的不懂的時候,畫圖理解,手動畫圖
     * 動態轉換方程公式:dp[i][j] = dp[i-1][j] + dp[i][j+1]
     * 初始值 如果 i == 0 || j == 0 ;dp[i][j] = 1;
     * 
     */
    public int uniquePaths(int m, int n) {
        int[][] dp = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n ; j++) {
                if(i == 0 || j ==0){
                    dp[i][j] = 1;
                }else{
                    dp[i][j] = dp[i-1][j] + dp[i][j-1];
                }
            }
        }
        return dp[m-1][n-1];
    }
}